commit da71b95aa25424fdb1abcc95cebe7db91fed7eeb Author: noxy Date: Mon Aug 26 16:58:26 2019 +0000 w0bm.com v1.5z FULL.RETARD.BUILD.BUT.STILL.WORKS diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..bbd97d4 --- /dev/null +++ b/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + "minify", + ["env", { + "targets": { + "browsers": ["IE 11"] + } + }] + ], + "sourceMaps": "inline" +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..95883de --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto +*.css linguist-vendored +*.less linguist-vendored diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php new file mode 100644 index 0000000..bae3b42 --- /dev/null +++ b/.phpstorm.meta.php @@ -0,0 +1,481 @@ + + * @see https://github.com/barryvdh/laravel-ide-helper + */ + $STATIC_METHOD_TYPES = [ + new \Illuminate\Contracts\Container\Container => [ + '' == '@', + 'events' instanceof \Illuminate\Events\Dispatcher, + 'router' instanceof \Illuminate\Routing\Router, + 'url' instanceof \Illuminate\Routing\UrlGenerator, + 'redirect' instanceof \Illuminate\Routing\Redirector, + 'Illuminate\Contracts\Routing\ResponseFactory' instanceof \Illuminate\Routing\ResponseFactory, + 'Illuminate\Contracts\Http\Kernel' instanceof \App\Http\Kernel, + 'Illuminate\Contracts\Console\Kernel' instanceof \App\Console\Kernel, + 'Illuminate\Contracts\Debug\ExceptionHandler' instanceof \App\Exceptions\Handler, + 'Psr\Log\LoggerInterface' instanceof \Monolog\Logger, + 'auth' instanceof \Illuminate\Auth\AuthManager, + 'auth.driver' instanceof \Toddish\Verify\Auth\VerifyGuard, + 'Illuminate\Contracts\Auth\Access\Gate' instanceof \Illuminate\Auth\Access\Gate, + 'illuminate.route.dispatcher' instanceof \Illuminate\Routing\ControllerDispatcher, + 'cookie' instanceof \Illuminate\Cookie\CookieJar, + 'Illuminate\Contracts\Queue\EntityResolver' instanceof \Illuminate\Database\Eloquent\QueueEntityResolver, + 'db.factory' instanceof \Illuminate\Database\Connectors\ConnectionFactory, + 'db' instanceof \Illuminate\Database\DatabaseManager, + 'encrypter' instanceof \Illuminate\Encryption\Encrypter, + 'files' instanceof \Illuminate\Filesystem\Filesystem, + 'filesystem' instanceof \Illuminate\Filesystem\FilesystemManager, + 'filesystem.disk' instanceof \Illuminate\Filesystem\FilesystemAdapter, + 'session' instanceof \Illuminate\Session\SessionManager, + 'session.store' instanceof \Illuminate\Session\Store, + 'Illuminate\Session\Middleware\StartSession' instanceof \Illuminate\Session\Middleware\StartSession, + 'validation.presence' instanceof \Illuminate\Validation\DatabasePresenceVerifier, + 'view.engine.resolver' instanceof \Illuminate\View\Engines\EngineResolver, + 'view.finder' instanceof \Illuminate\View\FileViewFinder, + 'view' instanceof \Illuminate\View\Factory, + 'recaptcha.service' instanceof \Greggilbert\Recaptcha\Service\CheckRecaptchaV2, + 'recaptcha' instanceof \Greggilbert\Recaptcha\Recaptcha, + 'Cviebrock\EloquentTaggable\Services\TagService' instanceof \Cviebrock\EloquentTaggable\Services\TagService, + 'blade.compiler' instanceof \Illuminate\View\Compilers\BladeCompiler, + 'translation.loader' instanceof \Illuminate\Translation\FileLoader, + 'translator' instanceof \Illuminate\Translation\Translator, + 'command.app.name' instanceof \Illuminate\Foundation\Console\AppNameCommand, + 'command.clear-compiled' instanceof \Illuminate\Foundation\Console\ClearCompiledCommand, + 'command.command.make' instanceof \Illuminate\Foundation\Console\CommandMakeCommand, + 'command.config.cache' instanceof \Illuminate\Foundation\Console\ConfigCacheCommand, + 'command.config.clear' instanceof \Illuminate\Foundation\Console\ConfigClearCommand, + 'command.console.make' instanceof \Illuminate\Foundation\Console\ConsoleMakeCommand, + 'command.event.generate' instanceof \Illuminate\Foundation\Console\EventGenerateCommand, + 'command.event.make' instanceof \Illuminate\Foundation\Console\EventMakeCommand, + 'command.down' instanceof \Illuminate\Foundation\Console\DownCommand, + 'command.environment' instanceof \Illuminate\Foundation\Console\EnvironmentCommand, + 'command.handler.command' instanceof \Illuminate\Foundation\Console\HandlerCommandCommand, + 'command.handler.event' instanceof \Illuminate\Foundation\Console\HandlerEventCommand, + 'command.job.make' instanceof \Illuminate\Foundation\Console\JobMakeCommand, + 'command.key.generate' instanceof \Illuminate\Foundation\Console\KeyGenerateCommand, + 'command.listener.make' instanceof \Illuminate\Foundation\Console\ListenerMakeCommand, + 'command.model.make' instanceof \Illuminate\Foundation\Console\ModelMakeCommand, + 'command.optimize' instanceof \Illuminate\Foundation\Console\OptimizeCommand, + 'command.policy.make' instanceof \Illuminate\Foundation\Console\PolicyMakeCommand, + 'command.provider.make' instanceof \Illuminate\Foundation\Console\ProviderMakeCommand, + 'command.request.make' instanceof \Illuminate\Foundation\Console\RequestMakeCommand, + 'command.route.cache' instanceof \Illuminate\Foundation\Console\RouteCacheCommand, + 'command.route.clear' instanceof \Illuminate\Foundation\Console\RouteClearCommand, + 'command.route.list' instanceof \Illuminate\Foundation\Console\RouteListCommand, + 'command.serve' instanceof \Illuminate\Foundation\Console\ServeCommand, + 'command.test.make' instanceof \Illuminate\Foundation\Console\TestMakeCommand, + 'command.tinker' instanceof \Illuminate\Foundation\Console\TinkerCommand, + 'command.up' instanceof \Illuminate\Foundation\Console\UpCommand, + 'command.vendor.publish' instanceof \Illuminate\Foundation\Console\VendorPublishCommand, + 'command.view.clear' instanceof \Illuminate\Foundation\Console\ViewClearCommand, + 'Illuminate\Broadcasting\BroadcastManager' instanceof \Illuminate\Broadcasting\BroadcastManager, + 'Illuminate\Bus\Dispatcher' instanceof \Illuminate\Bus\Dispatcher, + 'cache' instanceof \Illuminate\Cache\CacheManager, + 'cache.store' instanceof \Illuminate\Cache\Repository, + 'memcached.connector' instanceof \Illuminate\Cache\MemcachedConnector, + 'command.cache.clear' instanceof \Illuminate\Cache\Console\ClearCommand, + 'command.cache.table' instanceof \Illuminate\Cache\Console\CacheTableCommand, + 'command.auth.resets.clear' instanceof \Illuminate\Auth\Console\ClearResetsCommand, + 'migration.repository' instanceof \Illuminate\Database\Migrations\DatabaseMigrationRepository, + 'migrator' instanceof \Illuminate\Database\Migrations\Migrator, + 'command.migrate' instanceof \Illuminate\Database\Console\Migrations\MigrateCommand, + 'command.migrate.rollback' instanceof \Illuminate\Database\Console\Migrations\RollbackCommand, + 'command.migrate.reset' instanceof \Illuminate\Database\Console\Migrations\ResetCommand, + 'command.migrate.refresh' instanceof \Illuminate\Database\Console\Migrations\RefreshCommand, + 'command.migrate.install' instanceof \Illuminate\Database\Console\Migrations\InstallCommand, + 'migration.creator' instanceof \Illuminate\Database\Migrations\MigrationCreator, + 'command.migrate.make' instanceof \Illuminate\Database\Console\Migrations\MigrateMakeCommand, + 'command.migrate.status' instanceof \Illuminate\Database\Console\Migrations\StatusCommand, + 'command.seed' instanceof \Illuminate\Database\Console\Seeds\SeedCommand, + 'command.seeder.make' instanceof \Illuminate\Database\Console\Seeds\SeederMakeCommand, + 'seeder' instanceof \Illuminate\Database\Seeder, + 'composer' instanceof \Illuminate\Foundation\Composer, + 'command.queue.table' instanceof \Illuminate\Queue\Console\TableCommand, + 'command.queue.failed' instanceof \Illuminate\Queue\Console\ListFailedCommand, + 'command.queue.retry' instanceof \Illuminate\Queue\Console\RetryCommand, + 'command.queue.forget' instanceof \Illuminate\Queue\Console\ForgetFailedCommand, + 'command.queue.flush' instanceof \Illuminate\Queue\Console\FlushFailedCommand, + 'command.queue.failed-table' instanceof \Illuminate\Queue\Console\FailedTableCommand, + 'command.controller.make' instanceof \Illuminate\Routing\Console\ControllerMakeCommand, + 'command.middleware.make' instanceof \Illuminate\Routing\Console\MiddlewareMakeCommand, + 'command.session.database' instanceof \Illuminate\Session\Console\SessionTableCommand, + 'hash' instanceof \Illuminate\Hashing\BcryptHasher, + 'mailer' instanceof \Illuminate\Mail\Mailer, + 'Illuminate\Contracts\Pipeline\Hub' instanceof \Illuminate\Pipeline\Hub, + 'queue' instanceof \Illuminate\Queue\QueueManager, + 'queue.connection' instanceof \Illuminate\Queue\SyncQueue, + 'command.queue.work' instanceof \Illuminate\Queue\Console\WorkCommand, + 'command.queue.restart' instanceof \Illuminate\Queue\Console\RestartCommand, + 'queue.worker' instanceof \Illuminate\Queue\Worker, + 'command.queue.listen' instanceof \Illuminate\Queue\Console\ListenCommand, + 'queue.listener' instanceof \Illuminate\Queue\Listener, + 'command.queue.subscribe' instanceof \Illuminate\Queue\Console\SubscribeCommand, + 'queue.failer' instanceof \Illuminate\Queue\Failed\DatabaseFailedJobProvider, + 'IlluminateQueueClosure' instanceof \IlluminateQueueClosure, + 'auth.password' instanceof \Illuminate\Auth\Passwords\PasswordBroker, + 'auth.password.tokens' instanceof \Illuminate\Auth\Passwords\DatabaseTokenRepository, + 'command.ide-helper.generate' instanceof \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand, + 'command.ide-helper.models' instanceof \Barryvdh\LaravelIdeHelper\Console\ModelsCommand, + 'command.ide-helper.meta' instanceof \Barryvdh\LaravelIdeHelper\Console\MetaCommand, + 'html' instanceof \Illuminate\Html\HtmlBuilder, + 'form' instanceof \Illuminate\Html\FormBuilder, + ], + \Illuminate\Contracts\Container\Container::make('') => [ + '' == '@', + 'events' instanceof \Illuminate\Events\Dispatcher, + 'router' instanceof \Illuminate\Routing\Router, + 'url' instanceof \Illuminate\Routing\UrlGenerator, + 'redirect' instanceof \Illuminate\Routing\Redirector, + 'Illuminate\Contracts\Routing\ResponseFactory' instanceof \Illuminate\Routing\ResponseFactory, + 'Illuminate\Contracts\Http\Kernel' instanceof \App\Http\Kernel, + 'Illuminate\Contracts\Console\Kernel' instanceof \App\Console\Kernel, + 'Illuminate\Contracts\Debug\ExceptionHandler' instanceof \App\Exceptions\Handler, + 'Psr\Log\LoggerInterface' instanceof \Monolog\Logger, + 'auth' instanceof \Illuminate\Auth\AuthManager, + 'auth.driver' instanceof \Toddish\Verify\Auth\VerifyGuard, + 'Illuminate\Contracts\Auth\Access\Gate' instanceof \Illuminate\Auth\Access\Gate, + 'illuminate.route.dispatcher' instanceof \Illuminate\Routing\ControllerDispatcher, + 'cookie' instanceof \Illuminate\Cookie\CookieJar, + 'Illuminate\Contracts\Queue\EntityResolver' instanceof \Illuminate\Database\Eloquent\QueueEntityResolver, + 'db.factory' instanceof \Illuminate\Database\Connectors\ConnectionFactory, + 'db' instanceof \Illuminate\Database\DatabaseManager, + 'encrypter' instanceof \Illuminate\Encryption\Encrypter, + 'files' instanceof \Illuminate\Filesystem\Filesystem, + 'filesystem' instanceof \Illuminate\Filesystem\FilesystemManager, + 'filesystem.disk' instanceof \Illuminate\Filesystem\FilesystemAdapter, + 'session' instanceof \Illuminate\Session\SessionManager, + 'session.store' instanceof \Illuminate\Session\Store, + 'Illuminate\Session\Middleware\StartSession' instanceof \Illuminate\Session\Middleware\StartSession, + 'validation.presence' instanceof \Illuminate\Validation\DatabasePresenceVerifier, + 'view.engine.resolver' instanceof \Illuminate\View\Engines\EngineResolver, + 'view.finder' instanceof \Illuminate\View\FileViewFinder, + 'view' instanceof \Illuminate\View\Factory, + 'recaptcha.service' instanceof \Greggilbert\Recaptcha\Service\CheckRecaptchaV2, + 'recaptcha' instanceof \Greggilbert\Recaptcha\Recaptcha, + 'Cviebrock\EloquentTaggable\Services\TagService' instanceof \Cviebrock\EloquentTaggable\Services\TagService, + 'blade.compiler' instanceof \Illuminate\View\Compilers\BladeCompiler, + 'translation.loader' instanceof \Illuminate\Translation\FileLoader, + 'translator' instanceof \Illuminate\Translation\Translator, + 'command.app.name' instanceof \Illuminate\Foundation\Console\AppNameCommand, + 'command.clear-compiled' instanceof \Illuminate\Foundation\Console\ClearCompiledCommand, + 'command.command.make' instanceof \Illuminate\Foundation\Console\CommandMakeCommand, + 'command.config.cache' instanceof \Illuminate\Foundation\Console\ConfigCacheCommand, + 'command.config.clear' instanceof \Illuminate\Foundation\Console\ConfigClearCommand, + 'command.console.make' instanceof \Illuminate\Foundation\Console\ConsoleMakeCommand, + 'command.event.generate' instanceof \Illuminate\Foundation\Console\EventGenerateCommand, + 'command.event.make' instanceof \Illuminate\Foundation\Console\EventMakeCommand, + 'command.down' instanceof \Illuminate\Foundation\Console\DownCommand, + 'command.environment' instanceof \Illuminate\Foundation\Console\EnvironmentCommand, + 'command.handler.command' instanceof \Illuminate\Foundation\Console\HandlerCommandCommand, + 'command.handler.event' instanceof \Illuminate\Foundation\Console\HandlerEventCommand, + 'command.job.make' instanceof \Illuminate\Foundation\Console\JobMakeCommand, + 'command.key.generate' instanceof \Illuminate\Foundation\Console\KeyGenerateCommand, + 'command.listener.make' instanceof \Illuminate\Foundation\Console\ListenerMakeCommand, + 'command.model.make' instanceof \Illuminate\Foundation\Console\ModelMakeCommand, + 'command.optimize' instanceof \Illuminate\Foundation\Console\OptimizeCommand, + 'command.policy.make' instanceof \Illuminate\Foundation\Console\PolicyMakeCommand, + 'command.provider.make' instanceof \Illuminate\Foundation\Console\ProviderMakeCommand, + 'command.request.make' instanceof \Illuminate\Foundation\Console\RequestMakeCommand, + 'command.route.cache' instanceof \Illuminate\Foundation\Console\RouteCacheCommand, + 'command.route.clear' instanceof \Illuminate\Foundation\Console\RouteClearCommand, + 'command.route.list' instanceof \Illuminate\Foundation\Console\RouteListCommand, + 'command.serve' instanceof \Illuminate\Foundation\Console\ServeCommand, + 'command.test.make' instanceof \Illuminate\Foundation\Console\TestMakeCommand, + 'command.tinker' instanceof \Illuminate\Foundation\Console\TinkerCommand, + 'command.up' instanceof \Illuminate\Foundation\Console\UpCommand, + 'command.vendor.publish' instanceof \Illuminate\Foundation\Console\VendorPublishCommand, + 'command.view.clear' instanceof \Illuminate\Foundation\Console\ViewClearCommand, + 'Illuminate\Broadcasting\BroadcastManager' instanceof \Illuminate\Broadcasting\BroadcastManager, + 'Illuminate\Bus\Dispatcher' instanceof \Illuminate\Bus\Dispatcher, + 'cache' instanceof \Illuminate\Cache\CacheManager, + 'cache.store' instanceof \Illuminate\Cache\Repository, + 'memcached.connector' instanceof \Illuminate\Cache\MemcachedConnector, + 'command.cache.clear' instanceof \Illuminate\Cache\Console\ClearCommand, + 'command.cache.table' instanceof \Illuminate\Cache\Console\CacheTableCommand, + 'command.auth.resets.clear' instanceof \Illuminate\Auth\Console\ClearResetsCommand, + 'migration.repository' instanceof \Illuminate\Database\Migrations\DatabaseMigrationRepository, + 'migrator' instanceof \Illuminate\Database\Migrations\Migrator, + 'command.migrate' instanceof \Illuminate\Database\Console\Migrations\MigrateCommand, + 'command.migrate.rollback' instanceof \Illuminate\Database\Console\Migrations\RollbackCommand, + 'command.migrate.reset' instanceof \Illuminate\Database\Console\Migrations\ResetCommand, + 'command.migrate.refresh' instanceof \Illuminate\Database\Console\Migrations\RefreshCommand, + 'command.migrate.install' instanceof \Illuminate\Database\Console\Migrations\InstallCommand, + 'migration.creator' instanceof \Illuminate\Database\Migrations\MigrationCreator, + 'command.migrate.make' instanceof \Illuminate\Database\Console\Migrations\MigrateMakeCommand, + 'command.migrate.status' instanceof \Illuminate\Database\Console\Migrations\StatusCommand, + 'command.seed' instanceof \Illuminate\Database\Console\Seeds\SeedCommand, + 'command.seeder.make' instanceof \Illuminate\Database\Console\Seeds\SeederMakeCommand, + 'seeder' instanceof \Illuminate\Database\Seeder, + 'composer' instanceof \Illuminate\Foundation\Composer, + 'command.queue.table' instanceof \Illuminate\Queue\Console\TableCommand, + 'command.queue.failed' instanceof \Illuminate\Queue\Console\ListFailedCommand, + 'command.queue.retry' instanceof \Illuminate\Queue\Console\RetryCommand, + 'command.queue.forget' instanceof \Illuminate\Queue\Console\ForgetFailedCommand, + 'command.queue.flush' instanceof \Illuminate\Queue\Console\FlushFailedCommand, + 'command.queue.failed-table' instanceof \Illuminate\Queue\Console\FailedTableCommand, + 'command.controller.make' instanceof \Illuminate\Routing\Console\ControllerMakeCommand, + 'command.middleware.make' instanceof \Illuminate\Routing\Console\MiddlewareMakeCommand, + 'command.session.database' instanceof \Illuminate\Session\Console\SessionTableCommand, + 'hash' instanceof \Illuminate\Hashing\BcryptHasher, + 'mailer' instanceof \Illuminate\Mail\Mailer, + 'Illuminate\Contracts\Pipeline\Hub' instanceof \Illuminate\Pipeline\Hub, + 'queue' instanceof \Illuminate\Queue\QueueManager, + 'queue.connection' instanceof \Illuminate\Queue\SyncQueue, + 'command.queue.work' instanceof \Illuminate\Queue\Console\WorkCommand, + 'command.queue.restart' instanceof \Illuminate\Queue\Console\RestartCommand, + 'queue.worker' instanceof \Illuminate\Queue\Worker, + 'command.queue.listen' instanceof \Illuminate\Queue\Console\ListenCommand, + 'queue.listener' instanceof \Illuminate\Queue\Listener, + 'command.queue.subscribe' instanceof \Illuminate\Queue\Console\SubscribeCommand, + 'queue.failer' instanceof \Illuminate\Queue\Failed\DatabaseFailedJobProvider, + 'IlluminateQueueClosure' instanceof \IlluminateQueueClosure, + 'auth.password' instanceof \Illuminate\Auth\Passwords\PasswordBroker, + 'auth.password.tokens' instanceof \Illuminate\Auth\Passwords\DatabaseTokenRepository, + 'command.ide-helper.generate' instanceof \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand, + 'command.ide-helper.models' instanceof \Barryvdh\LaravelIdeHelper\Console\ModelsCommand, + 'command.ide-helper.meta' instanceof \Barryvdh\LaravelIdeHelper\Console\MetaCommand, + 'html' instanceof \Illuminate\Html\HtmlBuilder, + 'form' instanceof \Illuminate\Html\FormBuilder, + ], + \App::make('') => [ + '' == '@', + 'events' instanceof \Illuminate\Events\Dispatcher, + 'router' instanceof \Illuminate\Routing\Router, + 'url' instanceof \Illuminate\Routing\UrlGenerator, + 'redirect' instanceof \Illuminate\Routing\Redirector, + 'Illuminate\Contracts\Routing\ResponseFactory' instanceof \Illuminate\Routing\ResponseFactory, + 'Illuminate\Contracts\Http\Kernel' instanceof \App\Http\Kernel, + 'Illuminate\Contracts\Console\Kernel' instanceof \App\Console\Kernel, + 'Illuminate\Contracts\Debug\ExceptionHandler' instanceof \App\Exceptions\Handler, + 'Psr\Log\LoggerInterface' instanceof \Monolog\Logger, + 'auth' instanceof \Illuminate\Auth\AuthManager, + 'auth.driver' instanceof \Toddish\Verify\Auth\VerifyGuard, + 'Illuminate\Contracts\Auth\Access\Gate' instanceof \Illuminate\Auth\Access\Gate, + 'illuminate.route.dispatcher' instanceof \Illuminate\Routing\ControllerDispatcher, + 'cookie' instanceof \Illuminate\Cookie\CookieJar, + 'Illuminate\Contracts\Queue\EntityResolver' instanceof \Illuminate\Database\Eloquent\QueueEntityResolver, + 'db.factory' instanceof \Illuminate\Database\Connectors\ConnectionFactory, + 'db' instanceof \Illuminate\Database\DatabaseManager, + 'encrypter' instanceof \Illuminate\Encryption\Encrypter, + 'files' instanceof \Illuminate\Filesystem\Filesystem, + 'filesystem' instanceof \Illuminate\Filesystem\FilesystemManager, + 'filesystem.disk' instanceof \Illuminate\Filesystem\FilesystemAdapter, + 'session' instanceof \Illuminate\Session\SessionManager, + 'session.store' instanceof \Illuminate\Session\Store, + 'Illuminate\Session\Middleware\StartSession' instanceof \Illuminate\Session\Middleware\StartSession, + 'validation.presence' instanceof \Illuminate\Validation\DatabasePresenceVerifier, + 'view.engine.resolver' instanceof \Illuminate\View\Engines\EngineResolver, + 'view.finder' instanceof \Illuminate\View\FileViewFinder, + 'view' instanceof \Illuminate\View\Factory, + 'recaptcha.service' instanceof \Greggilbert\Recaptcha\Service\CheckRecaptchaV2, + 'recaptcha' instanceof \Greggilbert\Recaptcha\Recaptcha, + 'Cviebrock\EloquentTaggable\Services\TagService' instanceof \Cviebrock\EloquentTaggable\Services\TagService, + 'blade.compiler' instanceof \Illuminate\View\Compilers\BladeCompiler, + 'translation.loader' instanceof \Illuminate\Translation\FileLoader, + 'translator' instanceof \Illuminate\Translation\Translator, + 'command.app.name' instanceof \Illuminate\Foundation\Console\AppNameCommand, + 'command.clear-compiled' instanceof \Illuminate\Foundation\Console\ClearCompiledCommand, + 'command.command.make' instanceof \Illuminate\Foundation\Console\CommandMakeCommand, + 'command.config.cache' instanceof \Illuminate\Foundation\Console\ConfigCacheCommand, + 'command.config.clear' instanceof \Illuminate\Foundation\Console\ConfigClearCommand, + 'command.console.make' instanceof \Illuminate\Foundation\Console\ConsoleMakeCommand, + 'command.event.generate' instanceof \Illuminate\Foundation\Console\EventGenerateCommand, + 'command.event.make' instanceof \Illuminate\Foundation\Console\EventMakeCommand, + 'command.down' instanceof \Illuminate\Foundation\Console\DownCommand, + 'command.environment' instanceof \Illuminate\Foundation\Console\EnvironmentCommand, + 'command.handler.command' instanceof \Illuminate\Foundation\Console\HandlerCommandCommand, + 'command.handler.event' instanceof \Illuminate\Foundation\Console\HandlerEventCommand, + 'command.job.make' instanceof \Illuminate\Foundation\Console\JobMakeCommand, + 'command.key.generate' instanceof \Illuminate\Foundation\Console\KeyGenerateCommand, + 'command.listener.make' instanceof \Illuminate\Foundation\Console\ListenerMakeCommand, + 'command.model.make' instanceof \Illuminate\Foundation\Console\ModelMakeCommand, + 'command.optimize' instanceof \Illuminate\Foundation\Console\OptimizeCommand, + 'command.policy.make' instanceof \Illuminate\Foundation\Console\PolicyMakeCommand, + 'command.provider.make' instanceof \Illuminate\Foundation\Console\ProviderMakeCommand, + 'command.request.make' instanceof \Illuminate\Foundation\Console\RequestMakeCommand, + 'command.route.cache' instanceof \Illuminate\Foundation\Console\RouteCacheCommand, + 'command.route.clear' instanceof \Illuminate\Foundation\Console\RouteClearCommand, + 'command.route.list' instanceof \Illuminate\Foundation\Console\RouteListCommand, + 'command.serve' instanceof \Illuminate\Foundation\Console\ServeCommand, + 'command.test.make' instanceof \Illuminate\Foundation\Console\TestMakeCommand, + 'command.tinker' instanceof \Illuminate\Foundation\Console\TinkerCommand, + 'command.up' instanceof \Illuminate\Foundation\Console\UpCommand, + 'command.vendor.publish' instanceof \Illuminate\Foundation\Console\VendorPublishCommand, + 'command.view.clear' instanceof \Illuminate\Foundation\Console\ViewClearCommand, + 'Illuminate\Broadcasting\BroadcastManager' instanceof \Illuminate\Broadcasting\BroadcastManager, + 'Illuminate\Bus\Dispatcher' instanceof \Illuminate\Bus\Dispatcher, + 'cache' instanceof \Illuminate\Cache\CacheManager, + 'cache.store' instanceof \Illuminate\Cache\Repository, + 'memcached.connector' instanceof \Illuminate\Cache\MemcachedConnector, + 'command.cache.clear' instanceof \Illuminate\Cache\Console\ClearCommand, + 'command.cache.table' instanceof \Illuminate\Cache\Console\CacheTableCommand, + 'command.auth.resets.clear' instanceof \Illuminate\Auth\Console\ClearResetsCommand, + 'migration.repository' instanceof \Illuminate\Database\Migrations\DatabaseMigrationRepository, + 'migrator' instanceof \Illuminate\Database\Migrations\Migrator, + 'command.migrate' instanceof \Illuminate\Database\Console\Migrations\MigrateCommand, + 'command.migrate.rollback' instanceof \Illuminate\Database\Console\Migrations\RollbackCommand, + 'command.migrate.reset' instanceof \Illuminate\Database\Console\Migrations\ResetCommand, + 'command.migrate.refresh' instanceof \Illuminate\Database\Console\Migrations\RefreshCommand, + 'command.migrate.install' instanceof \Illuminate\Database\Console\Migrations\InstallCommand, + 'migration.creator' instanceof \Illuminate\Database\Migrations\MigrationCreator, + 'command.migrate.make' instanceof \Illuminate\Database\Console\Migrations\MigrateMakeCommand, + 'command.migrate.status' instanceof \Illuminate\Database\Console\Migrations\StatusCommand, + 'command.seed' instanceof \Illuminate\Database\Console\Seeds\SeedCommand, + 'command.seeder.make' instanceof \Illuminate\Database\Console\Seeds\SeederMakeCommand, + 'seeder' instanceof \Illuminate\Database\Seeder, + 'composer' instanceof \Illuminate\Foundation\Composer, + 'command.queue.table' instanceof \Illuminate\Queue\Console\TableCommand, + 'command.queue.failed' instanceof \Illuminate\Queue\Console\ListFailedCommand, + 'command.queue.retry' instanceof \Illuminate\Queue\Console\RetryCommand, + 'command.queue.forget' instanceof \Illuminate\Queue\Console\ForgetFailedCommand, + 'command.queue.flush' instanceof \Illuminate\Queue\Console\FlushFailedCommand, + 'command.queue.failed-table' instanceof \Illuminate\Queue\Console\FailedTableCommand, + 'command.controller.make' instanceof \Illuminate\Routing\Console\ControllerMakeCommand, + 'command.middleware.make' instanceof \Illuminate\Routing\Console\MiddlewareMakeCommand, + 'command.session.database' instanceof \Illuminate\Session\Console\SessionTableCommand, + 'hash' instanceof \Illuminate\Hashing\BcryptHasher, + 'mailer' instanceof \Illuminate\Mail\Mailer, + 'Illuminate\Contracts\Pipeline\Hub' instanceof \Illuminate\Pipeline\Hub, + 'queue' instanceof \Illuminate\Queue\QueueManager, + 'queue.connection' instanceof \Illuminate\Queue\SyncQueue, + 'command.queue.work' instanceof \Illuminate\Queue\Console\WorkCommand, + 'command.queue.restart' instanceof \Illuminate\Queue\Console\RestartCommand, + 'queue.worker' instanceof \Illuminate\Queue\Worker, + 'command.queue.listen' instanceof \Illuminate\Queue\Console\ListenCommand, + 'queue.listener' instanceof \Illuminate\Queue\Listener, + 'command.queue.subscribe' instanceof \Illuminate\Queue\Console\SubscribeCommand, + 'queue.failer' instanceof \Illuminate\Queue\Failed\DatabaseFailedJobProvider, + 'IlluminateQueueClosure' instanceof \IlluminateQueueClosure, + 'auth.password' instanceof \Illuminate\Auth\Passwords\PasswordBroker, + 'auth.password.tokens' instanceof \Illuminate\Auth\Passwords\DatabaseTokenRepository, + 'command.ide-helper.generate' instanceof \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand, + 'command.ide-helper.models' instanceof \Barryvdh\LaravelIdeHelper\Console\ModelsCommand, + 'command.ide-helper.meta' instanceof \Barryvdh\LaravelIdeHelper\Console\MetaCommand, + 'html' instanceof \Illuminate\Html\HtmlBuilder, + 'form' instanceof \Illuminate\Html\FormBuilder, + ], + app('') => [ + '' == '@', + 'events' instanceof \Illuminate\Events\Dispatcher, + 'router' instanceof \Illuminate\Routing\Router, + 'url' instanceof \Illuminate\Routing\UrlGenerator, + 'redirect' instanceof \Illuminate\Routing\Redirector, + 'Illuminate\Contracts\Routing\ResponseFactory' instanceof \Illuminate\Routing\ResponseFactory, + 'Illuminate\Contracts\Http\Kernel' instanceof \App\Http\Kernel, + 'Illuminate\Contracts\Console\Kernel' instanceof \App\Console\Kernel, + 'Illuminate\Contracts\Debug\ExceptionHandler' instanceof \App\Exceptions\Handler, + 'Psr\Log\LoggerInterface' instanceof \Monolog\Logger, + 'auth' instanceof \Illuminate\Auth\AuthManager, + 'auth.driver' instanceof \Toddish\Verify\Auth\VerifyGuard, + 'Illuminate\Contracts\Auth\Access\Gate' instanceof \Illuminate\Auth\Access\Gate, + 'illuminate.route.dispatcher' instanceof \Illuminate\Routing\ControllerDispatcher, + 'cookie' instanceof \Illuminate\Cookie\CookieJar, + 'Illuminate\Contracts\Queue\EntityResolver' instanceof \Illuminate\Database\Eloquent\QueueEntityResolver, + 'db.factory' instanceof \Illuminate\Database\Connectors\ConnectionFactory, + 'db' instanceof \Illuminate\Database\DatabaseManager, + 'encrypter' instanceof \Illuminate\Encryption\Encrypter, + 'files' instanceof \Illuminate\Filesystem\Filesystem, + 'filesystem' instanceof \Illuminate\Filesystem\FilesystemManager, + 'filesystem.disk' instanceof \Illuminate\Filesystem\FilesystemAdapter, + 'session' instanceof \Illuminate\Session\SessionManager, + 'session.store' instanceof \Illuminate\Session\Store, + 'Illuminate\Session\Middleware\StartSession' instanceof \Illuminate\Session\Middleware\StartSession, + 'validation.presence' instanceof \Illuminate\Validation\DatabasePresenceVerifier, + 'view.engine.resolver' instanceof \Illuminate\View\Engines\EngineResolver, + 'view.finder' instanceof \Illuminate\View\FileViewFinder, + 'view' instanceof \Illuminate\View\Factory, + 'recaptcha.service' instanceof \Greggilbert\Recaptcha\Service\CheckRecaptchaV2, + 'recaptcha' instanceof \Greggilbert\Recaptcha\Recaptcha, + 'Cviebrock\EloquentTaggable\Services\TagService' instanceof \Cviebrock\EloquentTaggable\Services\TagService, + 'blade.compiler' instanceof \Illuminate\View\Compilers\BladeCompiler, + 'translation.loader' instanceof \Illuminate\Translation\FileLoader, + 'translator' instanceof \Illuminate\Translation\Translator, + 'command.app.name' instanceof \Illuminate\Foundation\Console\AppNameCommand, + 'command.clear-compiled' instanceof \Illuminate\Foundation\Console\ClearCompiledCommand, + 'command.command.make' instanceof \Illuminate\Foundation\Console\CommandMakeCommand, + 'command.config.cache' instanceof \Illuminate\Foundation\Console\ConfigCacheCommand, + 'command.config.clear' instanceof \Illuminate\Foundation\Console\ConfigClearCommand, + 'command.console.make' instanceof \Illuminate\Foundation\Console\ConsoleMakeCommand, + 'command.event.generate' instanceof \Illuminate\Foundation\Console\EventGenerateCommand, + 'command.event.make' instanceof \Illuminate\Foundation\Console\EventMakeCommand, + 'command.down' instanceof \Illuminate\Foundation\Console\DownCommand, + 'command.environment' instanceof \Illuminate\Foundation\Console\EnvironmentCommand, + 'command.handler.command' instanceof \Illuminate\Foundation\Console\HandlerCommandCommand, + 'command.handler.event' instanceof \Illuminate\Foundation\Console\HandlerEventCommand, + 'command.job.make' instanceof \Illuminate\Foundation\Console\JobMakeCommand, + 'command.key.generate' instanceof \Illuminate\Foundation\Console\KeyGenerateCommand, + 'command.listener.make' instanceof \Illuminate\Foundation\Console\ListenerMakeCommand, + 'command.model.make' instanceof \Illuminate\Foundation\Console\ModelMakeCommand, + 'command.optimize' instanceof \Illuminate\Foundation\Console\OptimizeCommand, + 'command.policy.make' instanceof \Illuminate\Foundation\Console\PolicyMakeCommand, + 'command.provider.make' instanceof \Illuminate\Foundation\Console\ProviderMakeCommand, + 'command.request.make' instanceof \Illuminate\Foundation\Console\RequestMakeCommand, + 'command.route.cache' instanceof \Illuminate\Foundation\Console\RouteCacheCommand, + 'command.route.clear' instanceof \Illuminate\Foundation\Console\RouteClearCommand, + 'command.route.list' instanceof \Illuminate\Foundation\Console\RouteListCommand, + 'command.serve' instanceof \Illuminate\Foundation\Console\ServeCommand, + 'command.test.make' instanceof \Illuminate\Foundation\Console\TestMakeCommand, + 'command.tinker' instanceof \Illuminate\Foundation\Console\TinkerCommand, + 'command.up' instanceof \Illuminate\Foundation\Console\UpCommand, + 'command.vendor.publish' instanceof \Illuminate\Foundation\Console\VendorPublishCommand, + 'command.view.clear' instanceof \Illuminate\Foundation\Console\ViewClearCommand, + 'Illuminate\Broadcasting\BroadcastManager' instanceof \Illuminate\Broadcasting\BroadcastManager, + 'Illuminate\Bus\Dispatcher' instanceof \Illuminate\Bus\Dispatcher, + 'cache' instanceof \Illuminate\Cache\CacheManager, + 'cache.store' instanceof \Illuminate\Cache\Repository, + 'memcached.connector' instanceof \Illuminate\Cache\MemcachedConnector, + 'command.cache.clear' instanceof \Illuminate\Cache\Console\ClearCommand, + 'command.cache.table' instanceof \Illuminate\Cache\Console\CacheTableCommand, + 'command.auth.resets.clear' instanceof \Illuminate\Auth\Console\ClearResetsCommand, + 'migration.repository' instanceof \Illuminate\Database\Migrations\DatabaseMigrationRepository, + 'migrator' instanceof \Illuminate\Database\Migrations\Migrator, + 'command.migrate' instanceof \Illuminate\Database\Console\Migrations\MigrateCommand, + 'command.migrate.rollback' instanceof \Illuminate\Database\Console\Migrations\RollbackCommand, + 'command.migrate.reset' instanceof \Illuminate\Database\Console\Migrations\ResetCommand, + 'command.migrate.refresh' instanceof \Illuminate\Database\Console\Migrations\RefreshCommand, + 'command.migrate.install' instanceof \Illuminate\Database\Console\Migrations\InstallCommand, + 'migration.creator' instanceof \Illuminate\Database\Migrations\MigrationCreator, + 'command.migrate.make' instanceof \Illuminate\Database\Console\Migrations\MigrateMakeCommand, + 'command.migrate.status' instanceof \Illuminate\Database\Console\Migrations\StatusCommand, + 'command.seed' instanceof \Illuminate\Database\Console\Seeds\SeedCommand, + 'command.seeder.make' instanceof \Illuminate\Database\Console\Seeds\SeederMakeCommand, + 'seeder' instanceof \Illuminate\Database\Seeder, + 'composer' instanceof \Illuminate\Foundation\Composer, + 'command.queue.table' instanceof \Illuminate\Queue\Console\TableCommand, + 'command.queue.failed' instanceof \Illuminate\Queue\Console\ListFailedCommand, + 'command.queue.retry' instanceof \Illuminate\Queue\Console\RetryCommand, + 'command.queue.forget' instanceof \Illuminate\Queue\Console\ForgetFailedCommand, + 'command.queue.flush' instanceof \Illuminate\Queue\Console\FlushFailedCommand, + 'command.queue.failed-table' instanceof \Illuminate\Queue\Console\FailedTableCommand, + 'command.controller.make' instanceof \Illuminate\Routing\Console\ControllerMakeCommand, + 'command.middleware.make' instanceof \Illuminate\Routing\Console\MiddlewareMakeCommand, + 'command.session.database' instanceof \Illuminate\Session\Console\SessionTableCommand, + 'hash' instanceof \Illuminate\Hashing\BcryptHasher, + 'mailer' instanceof \Illuminate\Mail\Mailer, + 'Illuminate\Contracts\Pipeline\Hub' instanceof \Illuminate\Pipeline\Hub, + 'queue' instanceof \Illuminate\Queue\QueueManager, + 'queue.connection' instanceof \Illuminate\Queue\SyncQueue, + 'command.queue.work' instanceof \Illuminate\Queue\Console\WorkCommand, + 'command.queue.restart' instanceof \Illuminate\Queue\Console\RestartCommand, + 'queue.worker' instanceof \Illuminate\Queue\Worker, + 'command.queue.listen' instanceof \Illuminate\Queue\Console\ListenCommand, + 'queue.listener' instanceof \Illuminate\Queue\Listener, + 'command.queue.subscribe' instanceof \Illuminate\Queue\Console\SubscribeCommand, + 'queue.failer' instanceof \Illuminate\Queue\Failed\DatabaseFailedJobProvider, + 'IlluminateQueueClosure' instanceof \IlluminateQueueClosure, + 'auth.password' instanceof \Illuminate\Auth\Passwords\PasswordBroker, + 'auth.password.tokens' instanceof \Illuminate\Auth\Passwords\DatabaseTokenRepository, + 'command.ide-helper.generate' instanceof \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand, + 'command.ide-helper.models' instanceof \Barryvdh\LaravelIdeHelper\Console\ModelsCommand, + 'command.ide-helper.meta' instanceof \Barryvdh\LaravelIdeHelper\Console\MetaCommand, + 'html' instanceof \Illuminate\Html\HtmlBuilder, + 'form' instanceof \Illuminate\Html\FormBuilder, + ], + ]; +} diff --git a/_ide_helper.php b/_ide_helper.php new file mode 100644 index 0000000..cedd579 --- /dev/null +++ b/_ide_helper.php @@ -0,0 +1,12737 @@ + + * @see https://github.com/barryvdh/laravel-ide-helper + */ + +namespace { + exit("This file should not be included, only analyzed by your IDE"); + + class App extends \Illuminate\Support\Facades\App{ + + /** + * Get the version number of the application. + * + * @return string + * @static + */ + public static function version(){ + return \Illuminate\Foundation\Application::version(); + } + + /** + * Run the given array of bootstrap classes. + * + * @param array $bootstrappers + * @return void + * @static + */ + public static function bootstrapWith($bootstrappers){ + \Illuminate\Foundation\Application::bootstrapWith($bootstrappers); + } + + /** + * Register a callback to run after loading the environment. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function afterLoadingEnvironment($callback){ + \Illuminate\Foundation\Application::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){ + \Illuminate\Foundation\Application::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){ + \Illuminate\Foundation\Application::afterBootstrapping($bootstrapper, $callback); + } + + /** + * Determine if the application has been bootstrapped before. + * + * @return bool + * @static + */ + public static function hasBeenBootstrapped(){ + return \Illuminate\Foundation\Application::hasBeenBootstrapped(); + } + + /** + * Set the base path for the application. + * + * @param string $basePath + * @return $this + * @static + */ + public static function setBasePath($basePath){ + return \Illuminate\Foundation\Application::setBasePath($basePath); + } + + /** + * Get the path to the application "app" directory. + * + * @return string + * @static + */ + public static function path(){ + return \Illuminate\Foundation\Application::path(); + } + + /** + * Get the base path of the Laravel installation. + * + * @return string + * @static + */ + public static function basePath(){ + return \Illuminate\Foundation\Application::basePath(); + } + + /** + * Get the path to the application configuration files. + * + * @return string + * @static + */ + public static function configPath(){ + return \Illuminate\Foundation\Application::configPath(); + } + + /** + * Get the path to the database directory. + * + * @return string + * @static + */ + public static function databasePath(){ + return \Illuminate\Foundation\Application::databasePath(); + } + + /** + * Set the database directory. + * + * @param string $path + * @return $this + * @static + */ + public static function useDatabasePath($path){ + return \Illuminate\Foundation\Application::useDatabasePath($path); + } + + /** + * Get the path to the language files. + * + * @return string + * @static + */ + public static function langPath(){ + return \Illuminate\Foundation\Application::langPath(); + } + + /** + * Get the path to the public / web directory. + * + * @return string + * @static + */ + public static function publicPath(){ + return \Illuminate\Foundation\Application::publicPath(); + } + + /** + * Get the path to the storage directory. + * + * @return string + * @static + */ + public static function storagePath(){ + return \Illuminate\Foundation\Application::storagePath(); + } + + /** + * Set the storage directory. + * + * @param string $path + * @return $this + * @static + */ + public static function useStoragePath($path){ + return \Illuminate\Foundation\Application::useStoragePath($path); + } + + /** + * Get the path to the environment file directory. + * + * @return string + * @static + */ + public static function environmentPath(){ + return \Illuminate\Foundation\Application::environmentPath(); + } + + /** + * Set the directory for the environment file. + * + * @param string $path + * @return $this + * @static + */ + public static function useEnvironmentPath($path){ + return \Illuminate\Foundation\Application::useEnvironmentPath($path); + } + + /** + * Set the environment file to be loaded during bootstrapping. + * + * @param string $file + * @return $this + * @static + */ + public static function loadEnvironmentFrom($file){ + return \Illuminate\Foundation\Application::loadEnvironmentFrom($file); + } + + /** + * Get the environment file the application is using. + * + * @return string + * @static + */ + public static function environmentFile(){ + return \Illuminate\Foundation\Application::environmentFile(); + } + + /** + * Get or check the current application environment. + * + * @param mixed + * @return string + * @static + */ + public static function environment(){ + return \Illuminate\Foundation\Application::environment(); + } + + /** + * Determine if application is in local environment. + * + * @return bool + * @static + */ + public static function isLocal(){ + return \Illuminate\Foundation\Application::isLocal(); + } + + /** + * Detect the application's current environment. + * + * @param \Closure $callback + * @return string + * @static + */ + public static function detectEnvironment($callback){ + return \Illuminate\Foundation\Application::detectEnvironment($callback); + } + + /** + * Determine if we are running in the console. + * + * @return bool + * @static + */ + public static function runningInConsole(){ + return \Illuminate\Foundation\Application::runningInConsole(); + } + + /** + * Determine if we are running unit tests. + * + * @return bool + * @static + */ + public static function runningUnitTests(){ + return \Illuminate\Foundation\Application::runningUnitTests(); + } + + /** + * Register all of the configured providers. + * + * @return void + * @static + */ + public static function registerConfiguredProviders(){ + \Illuminate\Foundation\Application::registerConfiguredProviders(); + } + + /** + * Register a service provider with the application. + * + * @param \Illuminate\Support\ServiceProvider|string $provider + * @param array $options + * @param bool $force + * @return \Illuminate\Support\ServiceProvider + * @static + */ + public static function register($provider, $options = array(), $force = false){ + return \Illuminate\Foundation\Application::register($provider, $options, $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){ + return \Illuminate\Foundation\Application::getProvider($provider); + } + + /** + * Resolve a service provider instance from the class name. + * + * @param string $provider + * @return \Illuminate\Support\ServiceProvider + * @static + */ + public static function resolveProviderClass($provider){ + return \Illuminate\Foundation\Application::resolveProviderClass($provider); + } + + /** + * Load and boot all of the remaining deferred providers. + * + * @return void + * @static + */ + public static function loadDeferredProviders(){ + \Illuminate\Foundation\Application::loadDeferredProviders(); + } + + /** + * Load the provider for a deferred service. + * + * @param string $service + * @return void + * @static + */ + public static function loadDeferredProvider($service){ + \Illuminate\Foundation\Application::loadDeferredProvider($service); + } + + /** + * Register a deferred provider and service. + * + * @param string $provider + * @param string $service + * @return void + * @static + */ + public static function registerDeferredProvider($provider, $service = null){ + \Illuminate\Foundation\Application::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 = array()){ + return \Illuminate\Foundation\Application::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){ + return \Illuminate\Foundation\Application::bound($abstract); + } + + /** + * Determine if the application has booted. + * + * @return bool + * @static + */ + public static function isBooted(){ + return \Illuminate\Foundation\Application::isBooted(); + } + + /** + * Boot the application's service providers. + * + * @return void + * @static + */ + public static function boot(){ + \Illuminate\Foundation\Application::boot(); + } + + /** + * Register a new boot listener. + * + * @param mixed $callback + * @return void + * @static + */ + public static function booting($callback){ + \Illuminate\Foundation\Application::booting($callback); + } + + /** + * Register a new "booted" listener. + * + * @param mixed $callback + * @return void + * @static + */ + public static function booted($callback){ + \Illuminate\Foundation\Application::booted($callback); + } + + /** + * {@inheritdoc} + * + * @static + */ + public static function handle($request, $type = 1, $catch = true){ + return \Illuminate\Foundation\Application::handle($request, $type, $catch); + } + + /** + * Determine if middleware has been disabled for the application. + * + * @return bool + * @static + */ + public static function shouldSkipMiddleware(){ + return \Illuminate\Foundation\Application::shouldSkipMiddleware(); + } + + /** + * Determine if the application configuration is cached. + * + * @return bool + * @static + */ + public static function configurationIsCached(){ + return \Illuminate\Foundation\Application::configurationIsCached(); + } + + /** + * Get the path to the configuration cache file. + * + * @return string + * @static + */ + public static function getCachedConfigPath(){ + return \Illuminate\Foundation\Application::getCachedConfigPath(); + } + + /** + * Determine if the application routes are cached. + * + * @return bool + * @static + */ + public static function routesAreCached(){ + return \Illuminate\Foundation\Application::routesAreCached(); + } + + /** + * Get the path to the routes cache file. + * + * @return string + * @static + */ + public static function getCachedRoutesPath(){ + return \Illuminate\Foundation\Application::getCachedRoutesPath(); + } + + /** + * Get the path to the cached "compiled.php" file. + * + * @return string + * @static + */ + public static function getCachedCompilePath(){ + return \Illuminate\Foundation\Application::getCachedCompilePath(); + } + + /** + * Get the path to the cached services.json file. + * + * @return string + * @static + */ + public static function getCachedServicesPath(){ + return \Illuminate\Foundation\Application::getCachedServicesPath(); + } + + /** + * Determine if the application is currently down for maintenance. + * + * @return bool + * @static + */ + public static function isDownForMaintenance(){ + return \Illuminate\Foundation\Application::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 = array()){ + \Illuminate\Foundation\Application::abort($code, $message, $headers); + } + + /** + * Register a terminating callback with the application. + * + * @param \Closure $callback + * @return $this + * @static + */ + public static function terminating($callback){ + return \Illuminate\Foundation\Application::terminating($callback); + } + + /** + * Terminate the application. + * + * @return void + * @static + */ + public static function terminate(){ + \Illuminate\Foundation\Application::terminate(); + } + + /** + * Get the service providers that have been loaded. + * + * @return array + * @static + */ + public static function getLoadedProviders(){ + return \Illuminate\Foundation\Application::getLoadedProviders(); + } + + /** + * Get the application's deferred services. + * + * @return array + * @static + */ + public static function getDeferredServices(){ + return \Illuminate\Foundation\Application::getDeferredServices(); + } + + /** + * Set the application's deferred services. + * + * @param array $services + * @return void + * @static + */ + public static function setDeferredServices($services){ + \Illuminate\Foundation\Application::setDeferredServices($services); + } + + /** + * Add an array of services to the application's deferred services. + * + * @param array $services + * @return void + * @static + */ + public static function addDeferredServices($services){ + \Illuminate\Foundation\Application::addDeferredServices($services); + } + + /** + * Determine if the given service is a deferred service. + * + * @param string $service + * @return bool + * @static + */ + public static function isDeferredService($service){ + return \Illuminate\Foundation\Application::isDeferredService($service); + } + + /** + * Define a callback to be used to configure Monolog. + * + * @param callable $callback + * @return $this + * @static + */ + public static function configureMonologUsing($callback){ + return \Illuminate\Foundation\Application::configureMonologUsing($callback); + } + + /** + * Determine if the application has a custom Monolog configurator. + * + * @return bool + * @static + */ + public static function hasMonologConfigurator(){ + return \Illuminate\Foundation\Application::hasMonologConfigurator(); + } + + /** + * Get the custom Monolog configurator for the application. + * + * @return callable + * @static + */ + public static function getMonologConfigurator(){ + return \Illuminate\Foundation\Application::getMonologConfigurator(); + } + + /** + * Get the current application locale. + * + * @return string + * @static + */ + public static function getLocale(){ + return \Illuminate\Foundation\Application::getLocale(); + } + + /** + * Set the current application locale. + * + * @param string $locale + * @return void + * @static + */ + public static function setLocale($locale){ + \Illuminate\Foundation\Application::setLocale($locale); + } + + /** + * Register the core class aliases in the container. + * + * @return void + * @static + */ + public static function registerCoreContainerAliases(){ + \Illuminate\Foundation\Application::registerCoreContainerAliases(); + } + + /** + * Flush the container of all bindings and resolved instances. + * + * @return void + * @static + */ + public static function flush(){ + \Illuminate\Foundation\Application::flush(); + } + + /** + * Get the application namespace. + * + * @return string + * @throws \RuntimeException + * @static + */ + public static function getNamespace(){ + return \Illuminate\Foundation\Application::getNamespace(); + } + + /** + * Define a contextual binding. + * + * @param string $concrete + * @return \Illuminate\Contracts\Container\ContextualBindingBuilder + * @static + */ + public static function when($concrete){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::when($concrete); + } + + /** + * 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 + return \Illuminate\Foundation\Application::resolved($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 + return \Illuminate\Foundation\Application::isAlias($name); + } + + /** + * Register a binding with the container. + * + * @param string|array $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 + \Illuminate\Foundation\Application::bind($abstract, $concrete, $shared); + } + + /** + * Add a contextual binding to the container. + * + * @param string $concrete + * @param string $abstract + * @param \Closure|string $implementation + * @static + */ + public static function addContextualBinding($concrete, $abstract, $implementation){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::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 + \Illuminate\Foundation\Application::bindIf($abstract, $concrete, $shared); + } + + /** + * Register a shared binding in the container. + * + * @param string|array $abstract + * @param \Closure|string|null $concrete + * @return void + * @static + */ + public static function singleton($abstract, $concrete = null){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::singleton($abstract, $concrete); + } + + /** + * Wrap a Closure such that it is shared. + * + * @param \Closure $closure + * @return \Closure + * @static + */ + public static function share($closure){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::share($closure); + } + + /** + * Bind a shared Closure into the container. + * + * @param string $abstract + * @param \Closure $closure + * @return void + * @deprecated since version 5.1. Use singleton instead. + * @static + */ + public static function bindShared($abstract, $closure){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::bindShared($abstract, $closure); + } + + /** + * "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 + \Illuminate\Foundation\Application::extend($abstract, $closure); + } + + /** + * Register an existing instance as shared in the container. + * + * @param string $abstract + * @param mixed $instance + * @return void + * @static + */ + public static function instance($abstract, $instance){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::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 + \Illuminate\Foundation\Application::tag($abstracts, $tags); + } + + /** + * Resolve all of the bindings for a given tag. + * + * @param string $tag + * @return array + * @static + */ + public static function tagged($tag){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::tagged($tag); + } + + /** + * Alias a type to a different name. + * + * @param string $abstract + * @param string $alias + * @return void + * @static + */ + public static function alias($abstract, $alias){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::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 + return \Illuminate\Foundation\Application::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 + return \Illuminate\Foundation\Application::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 = array()){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::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 = array(), $defaultMethod = null){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::call($callback, $parameters, $defaultMethod); + } + + /** + * Instantiate a concrete instance of the given type. + * + * @param string $concrete + * @param array $parameters + * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException + * @static + */ + public static function build($concrete, $parameters = array()){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::build($concrete, $parameters); + } + + /** + * Register a new resolving callback. + * + * @param string $abstract + * @param \Closure|null $callback + * @return void + * @static + */ + public static function resolving($abstract, $callback = null){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::resolving($abstract, $callback); + } + + /** + * Register a new after resolving callback for all types. + * + * @param string $abstract + * @param \Closure|null $callback + * @return void + * @static + */ + public static function afterResolving($abstract, $callback = null){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::afterResolving($abstract, $callback); + } + + /** + * Determine if a given type is shared. + * + * @param string $abstract + * @return bool + * @static + */ + public static function isShared($abstract){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::isShared($abstract); + } + + /** + * Get the container's bindings. + * + * @return array + * @static + */ + public static function getBindings(){ + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::getBindings(); + } + + /** + * 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 + \Illuminate\Foundation\Application::forgetInstance($abstract); + } + + /** + * Clear all of the instances from the container. + * + * @return void + * @static + */ + public static function forgetInstances(){ + //Method inherited from \Illuminate\Container\Container + \Illuminate\Foundation\Application::forgetInstances(); + } + + /** + * Set 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 $container + * @return void + * @static + */ + public static function setInstance($container){ + //Method inherited from \Illuminate\Container\Container + \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 + return \Illuminate\Foundation\Application::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 + return \Illuminate\Foundation\Application::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 + \Illuminate\Foundation\Application::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 + \Illuminate\Foundation\Application::offsetUnset($key); + } + + } + + + class Artisan extends \Illuminate\Support\Facades\Artisan{ + + /** + * Run the console application. + * + * @param \Symfony\Component\Console\Input\InputInterface $input + * @param \Symfony\Component\Console\Output\OutputInterface $output + * @return int + * @static + */ + public static function handle($input, $output = null){ + //Method inherited from \Illuminate\Foundation\Console\Kernel + return \App\Console\Kernel::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 + \App\Console\Kernel::terminate($input, $status); + } + + /** + * Run an Artisan console command by name. + * + * @param string $command + * @param array $parameters + * @return int + * @static + */ + public static function call($command, $parameters = array()){ + //Method inherited from \Illuminate\Foundation\Console\Kernel + return \App\Console\Kernel::call($command, $parameters); + } + + /** + * Queue the given console command. + * + * @param string $command + * @param array $parameters + * @return void + * @static + */ + public static function queue($command, $parameters = array()){ + //Method inherited from \Illuminate\Foundation\Console\Kernel + \App\Console\Kernel::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 + return \App\Console\Kernel::all(); + } + + /** + * Get the output for the last run command. + * + * @return string + * @static + */ + public static function output(){ + //Method inherited from \Illuminate\Foundation\Console\Kernel + return \App\Console\Kernel::output(); + } + + /** + * Bootstrap the application for HTTP requests. + * + * @return void + * @static + */ + public static function bootstrap(){ + //Method inherited from \Illuminate\Foundation\Console\Kernel + \App\Console\Kernel::bootstrap(); + } + + } + + + class Auth extends \Illuminate\Support\Facades\Auth{ + + /** + * Create an instance of the database driver. + * + * @return \Illuminate\Auth\Guard + * @static + */ + public static function createDatabaseDriver(){ + return \Illuminate\Auth\AuthManager::createDatabaseDriver(); + } + + /** + * Create an instance of the Eloquent driver. + * + * @return \Illuminate\Auth\Guard + * @static + */ + public static function createEloquentDriver(){ + return \Illuminate\Auth\AuthManager::createEloquentDriver(); + } + + /** + * Get the default authentication driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver(){ + return \Illuminate\Auth\AuthManager::getDefaultDriver(); + } + + /** + * Set the default authentication driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name){ + \Illuminate\Auth\AuthManager::setDefaultDriver($name); + } + + /** + * Get a driver instance. + * + * @param string $driver + * @return mixed + * @static + */ + public static function driver($driver = null){ + //Method inherited from \Illuminate\Support\Manager + return \Illuminate\Auth\AuthManager::driver($driver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return $this + * @static + */ + public static function extend($driver, $callback){ + //Method inherited from \Illuminate\Support\Manager + return \Illuminate\Auth\AuthManager::extend($driver, $callback); + } + + /** + * Get all of the created "drivers". + * + * @return array + * @static + */ + public static function getDrivers(){ + //Method inherited from \Illuminate\Support\Manager + return \Illuminate\Auth\AuthManager::getDrivers(); + } + + /** + * + * + * @static + */ + public static function verify($credentials = array(), $remember = false, $login = true){ + return \Toddish\Verify\Auth\VerifyGuard::verify($credentials, $remember, $login); + } + + /** + * Determine if the current user is authenticated. + * + * @return bool + * @static + */ + public static function check(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::check(); + } + + /** + * Determine if the current user is a guest. + * + * @return bool + * @static + */ + public static function guest(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::guest(); + } + + /** + * Get the currently authenticated user. + * + * @return \App\Models\User|null + * @static + */ + public static function user(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::user(); + } + + /** + * Get the ID for the currently authenticated user. + * + * @return int|null + * @static + */ + public static function id(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::id(); + } + + /** + * Log a user into the application without sessions or cookies. + * + * @param array $credentials + * @return bool + * @static + */ + public static function once($credentials = array()){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::once($credentials); + } + + /** + * Validate a user's credentials. + * + * @param array $credentials + * @return bool + * @static + */ + public static function validate($credentials = array()){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::validate($credentials); + } + + /** + * Attempt to authenticate using HTTP Basic Auth. + * + * @param string $field + * @return \Symfony\Component\HttpFoundation\Response|null + * @static + */ + public static function basic($field = 'email'){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::basic($field); + } + + /** + * Perform a stateless HTTP Basic login attempt. + * + * @param string $field + * @return \Symfony\Component\HttpFoundation\Response|null + * @static + */ + public static function onceBasic($field = 'email'){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::onceBasic($field); + } + + /** + * Attempt to authenticate a user using the given credentials. + * + * @param array $credentials + * @param bool $remember + * @param bool $login + * @return bool + * @static + */ + public static function attempt($credentials = array(), $remember = false, $login = true){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::attempt($credentials, $remember, $login); + } + + /** + * Register an authentication attempt event listener. + * + * @param mixed $callback + * @return void + * @static + */ + public static function attempting($callback){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::attempting($callback); + } + + /** + * 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){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::login($user, $remember); + } + + /** + * Log the given user ID into the application. + * + * @param mixed $id + * @param bool $remember + * @return \App\Models\User + * @static + */ + public static function loginUsingId($id, $remember = false){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::loginUsingId($id, $remember); + } + + /** + * Log the given user ID into the application without sessions or cookies. + * + * @param mixed $id + * @return bool + * @static + */ + public static function onceUsingId($id){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::onceUsingId($id); + } + + /** + * Log the user out of the application. + * + * @return void + * @static + */ + public static function logout(){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::logout(); + } + + /** + * Get the cookie creator instance used by the guard. + * + * @return \Illuminate\Contracts\Cookie\QueueingFactory + * @throws \RuntimeException + * @static + */ + public static function getCookieJar(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getCookieJar(); + } + + /** + * Set the cookie creator instance used by the guard. + * + * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie + * @return void + * @static + */ + public static function setCookieJar($cookie){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::setCookieJar($cookie); + } + + /** + * Get the event dispatcher instance. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getDispatcher(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getDispatcher(); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setDispatcher($events){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::setDispatcher($events); + } + + /** + * Get the session store used by the guard. + * + * @return \Illuminate\Session\Store + * @static + */ + public static function getSession(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getSession(); + } + + /** + * Get the user provider used by the guard. + * + * @return \Illuminate\Contracts\Auth\UserProvider + * @static + */ + public static function getProvider(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getProvider(); + } + + /** + * Set the user provider used by the guard. + * + * @param \Illuminate\Contracts\Auth\UserProvider $provider + * @return void + * @static + */ + public static function setProvider($provider){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::setProvider($provider); + } + + /** + * Return the currently cached user. + * + * @return \App\Models\User|null + * @static + */ + public static function getUser(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getUser(); + } + + /** + * Set the current user. + * + * @param \Illuminate\Contracts\Auth\Authenticatable $user + * @return void + * @static + */ + public static function setUser($user){ + //Method inherited from \Illuminate\Auth\Guard + \Toddish\Verify\Auth\VerifyGuard::setUser($user); + } + + /** + * Get the current request instance. + * + * @return \Symfony\Component\HttpFoundation\Request + * @static + */ + public static function getRequest(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getRequest(); + } + + /** + * Set the current request instance. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return $this + * @static + */ + public static function setRequest($request){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::setRequest($request); + } + + /** + * Get the last user we attempted to authenticate. + * + * @return \App\Models\User + * @static + */ + public static function getLastAttempted(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getLastAttempted(); + } + + /** + * Get a unique identifier for the auth session value. + * + * @return string + * @static + */ + public static function getName(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getName(); + } + + /** + * Get the name of the cookie used to store the "recaller". + * + * @return string + * @static + */ + public static function getRecallerName(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::getRecallerName(); + } + + /** + * Determine if the user was authenticated via "remember me" cookie. + * + * @return bool + * @static + */ + public static function viaRemember(){ + //Method inherited from \Illuminate\Auth\Guard + return \Toddish\Verify\Auth\VerifyGuard::viaRemember(); + } + + } + + + class Blade extends \Illuminate\Support\Facades\Blade{ + + /** + * Compile the view at the given path. + * + * @param string $path + * @return void + * @static + */ + public static function compile($path = null){ + \Illuminate\View\Compilers\BladeCompiler::compile($path); + } + + /** + * Get the path currently being compiled. + * + * @return string + * @static + */ + public static function getPath(){ + return \Illuminate\View\Compilers\BladeCompiler::getPath(); + } + + /** + * Set the path currently being compiled. + * + * @param string $path + * @return void + * @static + */ + public static function setPath($path){ + \Illuminate\View\Compilers\BladeCompiler::setPath($path); + } + + /** + * Compile the given Blade template contents. + * + * @param string $value + * @return string + * @static + */ + public static function compileString($value){ + return \Illuminate\View\Compilers\BladeCompiler::compileString($value); + } + + /** + * Compile the default values for the echo statement. + * + * @param string $value + * @return string + * @static + */ + public static function compileEchoDefaults($value){ + return \Illuminate\View\Compilers\BladeCompiler::compileEchoDefaults($value); + } + + /** + * Get the extensions used by the compiler. + * + * @return array + * @static + */ + public static function getExtensions(){ + return \Illuminate\View\Compilers\BladeCompiler::getExtensions(); + } + + /** + * Register a custom Blade compiler. + * + * @param callable $compiler + * @return void + * @static + */ + public static function extend($compiler){ + \Illuminate\View\Compilers\BladeCompiler::extend($compiler); + } + + /** + * Register a handler for custom directives. + * + * @param string $name + * @param callable $handler + * @return void + * @static + */ + public static function directive($name, $handler){ + \Illuminate\View\Compilers\BladeCompiler::directive($name, $handler); + } + + /** + * Get the list of custom directives. + * + * @return array + * @static + */ + public static function getCustomDirectives(){ + return \Illuminate\View\Compilers\BladeCompiler::getCustomDirectives(); + } + + /** + * Gets the raw tags used by the compiler. + * + * @return array + * @static + */ + public static function getRawTags(){ + return \Illuminate\View\Compilers\BladeCompiler::getRawTags(); + } + + /** + * Sets the raw tags used for the compiler. + * + * @param string $openTag + * @param string $closeTag + * @return void + * @static + */ + public static function setRawTags($openTag, $closeTag){ + \Illuminate\View\Compilers\BladeCompiler::setRawTags($openTag, $closeTag); + } + + /** + * Sets the content tags used for the compiler. + * + * @param string $openTag + * @param string $closeTag + * @param bool $escaped + * @return void + * @static + */ + public static function setContentTags($openTag, $closeTag, $escaped = false){ + \Illuminate\View\Compilers\BladeCompiler::setContentTags($openTag, $closeTag, $escaped); + } + + /** + * Sets the escaped content tags used for the compiler. + * + * @param string $openTag + * @param string $closeTag + * @return void + * @static + */ + public static function setEscapedContentTags($openTag, $closeTag){ + \Illuminate\View\Compilers\BladeCompiler::setEscapedContentTags($openTag, $closeTag); + } + + /** + * Gets the content tags used for the compiler. + * + * @return string + * @static + */ + public static function getContentTags(){ + return \Illuminate\View\Compilers\BladeCompiler::getContentTags(); + } + + /** + * Gets the escaped content tags used for the compiler. + * + * @return string + * @static + */ + public static function getEscapedContentTags(){ + return \Illuminate\View\Compilers\BladeCompiler::getEscapedContentTags(); + } + + /** + * Set the echo format to be used by the compiler. + * + * @param string $format + * @return void + * @static + */ + public static function setEchoFormat($format){ + \Illuminate\View\Compilers\BladeCompiler::setEchoFormat($format); + } + + /** + * 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 + return \Illuminate\View\Compilers\BladeCompiler::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 + return \Illuminate\View\Compilers\BladeCompiler::isExpired($path); + } + + } + + + class Bus extends \Illuminate\Support\Facades\Bus{ + + /** + * Marshal a command and dispatch it to its appropriate handler. + * + * @param mixed $command + * @param array $array + * @return mixed + * @static + */ + public static function dispatchFromArray($command, $array){ + return \Illuminate\Bus\Dispatcher::dispatchFromArray($command, $array); + } + + /** + * Marshal a command and dispatch it to its appropriate handler. + * + * @param mixed $command + * @param \ArrayAccess $source + * @param array $extras + * @return mixed + * @static + */ + public static function dispatchFrom($command, $source, $extras = array()){ + return \Illuminate\Bus\Dispatcher::dispatchFrom($command, $source, $extras); + } + + /** + * Dispatch a command to its appropriate handler. + * + * @param mixed $command + * @param \Closure|null $afterResolving + * @return mixed + * @static + */ + public static function dispatch($command, $afterResolving = null){ + return \Illuminate\Bus\Dispatcher::dispatch($command, $afterResolving); + } + + /** + * Dispatch a command to its appropriate handler in the current process. + * + * @param mixed $command + * @param \Closure|null $afterResolving + * @return mixed + * @static + */ + public static function dispatchNow($command, $afterResolving = null){ + return \Illuminate\Bus\Dispatcher::dispatchNow($command, $afterResolving); + } + + /** + * Dispatch a command to its appropriate handler behind a queue. + * + * @param mixed $command + * @return mixed + * @throws \RuntimeException + * @static + */ + public static function dispatchToQueue($command){ + return \Illuminate\Bus\Dispatcher::dispatchToQueue($command); + } + + /** + * Get the handler instance for the given command. + * + * @param mixed $command + * @return mixed + * @static + */ + public static function resolveHandler($command){ + return \Illuminate\Bus\Dispatcher::resolveHandler($command); + } + + /** + * Get the handler class for the given command. + * + * @param mixed $command + * @return string + * @static + */ + public static function getHandlerClass($command){ + return \Illuminate\Bus\Dispatcher::getHandlerClass($command); + } + + /** + * Get the handler method for the given command. + * + * @param mixed $command + * @return string + * @static + */ + public static function getHandlerMethod($command){ + return \Illuminate\Bus\Dispatcher::getHandlerMethod($command); + } + + /** + * Register command-to-handler mappings. + * + * @param array $commands + * @return void + * @static + */ + public static function maps($commands){ + \Illuminate\Bus\Dispatcher::maps($commands); + } + + /** + * Register a fallback mapper callback. + * + * @param \Closure $mapper + * @return void + * @static + */ + public static function mapUsing($mapper){ + \Illuminate\Bus\Dispatcher::mapUsing($mapper); + } + + /** + * Map the command to a handler within a given root namespace. + * + * @param mixed $command + * @param string $commandNamespace + * @param string $handlerNamespace + * @return string + * @static + */ + public static function simpleMapping($command, $commandNamespace, $handlerNamespace){ + return \Illuminate\Bus\Dispatcher::simpleMapping($command, $commandNamespace, $handlerNamespace); + } + + /** + * Set the pipes through which commands should be piped before dispatching. + * + * @param array $pipes + * @return $this + * @static + */ + public static function pipeThrough($pipes){ + return \Illuminate\Bus\Dispatcher::pipeThrough($pipes); + } + + } + + + class Cache extends \Illuminate\Support\Facades\Cache{ + + /** + * Get a cache store instance by name. + * + * @param string|null $name + * @return mixed + * @static + */ + public static function store($name = null){ + return \Illuminate\Cache\CacheManager::store($name); + } + + /** + * Get a cache driver instance. + * + * @param string $driver + * @return mixed + * @static + */ + public static function driver($driver = null){ + return \Illuminate\Cache\CacheManager::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){ + return \Illuminate\Cache\CacheManager::repository($store); + } + + /** + * Get the default cache driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver(){ + return \Illuminate\Cache\CacheManager::getDefaultDriver(); + } + + /** + * Set the default cache driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name){ + \Illuminate\Cache\CacheManager::setDefaultDriver($name); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return $this + * @static + */ + public static function extend($driver, $callback){ + return \Illuminate\Cache\CacheManager::extend($driver, $callback); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setEventDispatcher($events){ + \Illuminate\Cache\Repository::setEventDispatcher($events); + } + + /** + * Determine if an item exists in the cache. + * + * @param string $key + * @return bool + * @static + */ + public static function has($key){ + return \Illuminate\Cache\Repository::has($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){ + return \Illuminate\Cache\Repository::get($key, $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){ + return \Illuminate\Cache\Repository::pull($key, $default); + } + + /** + * Store an item in the cache. + * + * @param string $key + * @param mixed $value + * @param \DateTime|int $minutes + * @return void + * @static + */ + public static function put($key, $value, $minutes){ + \Illuminate\Cache\Repository::put($key, $value, $minutes); + } + + /** + * Store an item in the cache if the key does not exist. + * + * @param string $key + * @param mixed $value + * @param \DateTime|int $minutes + * @return bool + * @static + */ + public static function add($key, $value, $minutes){ + return \Illuminate\Cache\Repository::add($key, $value, $minutes); + } + + /** + * Store an item in the cache indefinitely. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function forever($key, $value){ + \Illuminate\Cache\Repository::forever($key, $value); + } + + /** + * Get an item from the cache, or store the default value. + * + * @param string $key + * @param \DateTime|int $minutes + * @param \Closure $callback + * @return mixed + * @static + */ + public static function remember($key, $minutes, $callback){ + return \Illuminate\Cache\Repository::remember($key, $minutes, $callback); + } + + /** + * Get an item from the cache, or store the default value forever. + * + * @param string $key + * @param \Closure $callback + * @return mixed + * @static + */ + public static function sear($key, $callback){ + return \Illuminate\Cache\Repository::sear($key, $callback); + } + + /** + * Get an item from the cache, or store the default value forever. + * + * @param string $key + * @param \Closure $callback + * @return mixed + * @static + */ + public static function rememberForever($key, $callback){ + return \Illuminate\Cache\Repository::rememberForever($key, $callback); + } + + /** + * Remove an item from the cache. + * + * @param string $key + * @return bool + * @static + */ + public static function forget($key){ + return \Illuminate\Cache\Repository::forget($key); + } + + /** + * Get the default cache time. + * + * @return int + * @static + */ + public static function getDefaultCacheTime(){ + return \Illuminate\Cache\Repository::getDefaultCacheTime(); + } + + /** + * Set the default cache time in minutes. + * + * @param int $minutes + * @return void + * @static + */ + public static function setDefaultCacheTime($minutes){ + \Illuminate\Cache\Repository::setDefaultCacheTime($minutes); + } + + /** + * Get the cache store implementation. + * + * @return \Illuminate\Contracts\Cache\Store + * @static + */ + public static function getStore(){ + return \Illuminate\Cache\Repository::getStore(); + } + + /** + * Determine if a cached value exists. + * + * @param string $key + * @return bool + * @static + */ + public static function offsetExists($key){ + return \Illuminate\Cache\Repository::offsetExists($key); + } + + /** + * Retrieve an item from the cache by key. + * + * @param string $key + * @return mixed + * @static + */ + public static function offsetGet($key){ + return \Illuminate\Cache\Repository::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){ + \Illuminate\Cache\Repository::offsetSet($key, $value); + } + + /** + * Remove an item from the cache. + * + * @param string $key + * @return void + * @static + */ + public static function offsetUnset($key){ + \Illuminate\Cache\Repository::offsetUnset($key); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param callable $macro + * @return void + * @static + */ + public static function macro($name, $macro){ + \Illuminate\Cache\Repository::macro($name, $macro); + } + + /** + * 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){ + return \Illuminate\Cache\Repository::macroCall($method, $parameters); + } + + /** + * Increment the value of an item in the cache. + * + * @param string $key + * @param mixed $value + * @return int + * @static + */ + public static function increment($key, $value = 1){ + return \Illuminate\Cache\FileStore::increment($key, $value); + } + + /** + * Decrement the value of an item in the cache. + * + * @param string $key + * @param mixed $value + * @return int + * @static + */ + public static function decrement($key, $value = 1){ + return \Illuminate\Cache\FileStore::decrement($key, $value); + } + + /** + * Remove all items from the cache. + * + * @return void + * @static + */ + public static function flush(){ + \Illuminate\Cache\FileStore::flush(); + } + + /** + * Get the Filesystem instance. + * + * @return \Illuminate\Filesystem\Filesystem + * @static + */ + public static function getFilesystem(){ + return \Illuminate\Cache\FileStore::getFilesystem(); + } + + /** + * Get the working directory of the cache. + * + * @return string + * @static + */ + public static function getDirectory(){ + return \Illuminate\Cache\FileStore::getDirectory(); + } + + /** + * Get the cache key prefix. + * + * @return string + * @static + */ + public static function getPrefix(){ + return \Illuminate\Cache\FileStore::getPrefix(); + } + + } + + + class Config extends \Illuminate\Support\Facades\Config{ + + /** + * Determine if the given configuration value exists. + * + * @param string $key + * @return bool + * @static + */ + public static function has($key){ + return \Illuminate\Config\Repository::has($key); + } + + /** + * Get the specified configuration value. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function get($key, $default = null){ + return \Illuminate\Config\Repository::get($key, $default); + } + + /** + * Set a given configuration value. + * + * @param array|string $key + * @param mixed $value + * @return void + * @static + */ + public static function set($key, $value = null){ + \Illuminate\Config\Repository::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){ + \Illuminate\Config\Repository::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){ + \Illuminate\Config\Repository::push($key, $value); + } + + /** + * Get all of the configuration items for the application. + * + * @return array + * @static + */ + public static function all(){ + return \Illuminate\Config\Repository::all(); + } + + /** + * Determine if the given configuration option exists. + * + * @param string $key + * @return bool + * @static + */ + public static function offsetExists($key){ + return \Illuminate\Config\Repository::offsetExists($key); + } + + /** + * Get a configuration option. + * + * @param string $key + * @return mixed + * @static + */ + public static function offsetGet($key){ + return \Illuminate\Config\Repository::offsetGet($key); + } + + /** + * Set a configuration option. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($key, $value){ + \Illuminate\Config\Repository::offsetSet($key, $value); + } + + /** + * Unset a configuration option. + * + * @param string $key + * @return void + * @static + */ + public static function offsetUnset($key){ + \Illuminate\Config\Repository::offsetUnset($key); + } + + } + + + class Cookie extends \Illuminate\Support\Facades\Cookie{ + + /** + * Create a new cookie instance. + * + * @param string $name + * @param string $value + * @param int $minutes + * @param string $path + * @param string $domain + * @param bool $secure + * @param bool $httpOnly + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = false, $httpOnly = true){ + return \Illuminate\Cookie\CookieJar::make($name, $value, $minutes, $path, $domain, $secure, $httpOnly); + } + + /** + * Create a cookie that lasts "forever" (five years). + * + * @param string $name + * @param string $value + * @param string $path + * @param string $domain + * @param bool $secure + * @param bool $httpOnly + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function forever($name, $value, $path = null, $domain = null, $secure = false, $httpOnly = true){ + return \Illuminate\Cookie\CookieJar::forever($name, $value, $path, $domain, $secure, $httpOnly); + } + + /** + * Expire the given cookie. + * + * @param string $name + * @param string $path + * @param string $domain + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function forget($name, $path = null, $domain = null){ + return \Illuminate\Cookie\CookieJar::forget($name, $path, $domain); + } + + /** + * Determine if a cookie has been queued. + * + * @param string $key + * @return bool + * @static + */ + public static function hasQueued($key){ + return \Illuminate\Cookie\CookieJar::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){ + return \Illuminate\Cookie\CookieJar::queued($key, $default); + } + + /** + * Queue a cookie to send with the next response. + * + * @param mixed + * @return void + * @static + */ + public static function queue(){ + \Illuminate\Cookie\CookieJar::queue(); + } + + /** + * Remove a cookie from the queue. + * + * @param string $name + * @static + */ + public static function unqueue($name){ + return \Illuminate\Cookie\CookieJar::unqueue($name); + } + + /** + * Set the default path and domain for the jar. + * + * @param string $path + * @param string $domain + * @return $this + * @static + */ + public static function setDefaultPathAndDomain($path, $domain){ + return \Illuminate\Cookie\CookieJar::setDefaultPathAndDomain($path, $domain); + } + + /** + * Get the cookies which have been queued for the next request. + * + * @return array + * @static + */ + public static function getQueuedCookies(){ + return \Illuminate\Cookie\CookieJar::getQueuedCookies(); + } + + } + + + class Crypt extends \Illuminate\Support\Facades\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); + } + + /** + * Encrypt the given value. + * + * @param string $value + * @return string + * @static + */ + public static function encrypt($value){ + return \Illuminate\Encryption\Encrypter::encrypt($value); + } + + /** + * Decrypt the given value. + * + * @param string $payload + * @return string + * @static + */ + public static function decrypt($payload){ + return \Illuminate\Encryption\Encrypter::decrypt($payload); + } + + } + + + class DB extends \Illuminate\Support\Facades\DB{ + + /** + * Get a database connection instance. + * + * @param string $name + * @return \Illuminate\Database\Connection + * @static + */ + public static function connection($name = null){ + return \Illuminate\Database\DatabaseManager::connection($name); + } + + /** + * Disconnect from the given database and remove from local cache. + * + * @param string $name + * @return void + * @static + */ + public static function purge($name = null){ + \Illuminate\Database\DatabaseManager::purge($name); + } + + /** + * Disconnect from the given database. + * + * @param string $name + * @return void + * @static + */ + public static function disconnect($name = null){ + \Illuminate\Database\DatabaseManager::disconnect($name); + } + + /** + * Reconnect to the given database. + * + * @param string $name + * @return \Illuminate\Database\Connection + * @static + */ + public static function reconnect($name = null){ + return \Illuminate\Database\DatabaseManager::reconnect($name); + } + + /** + * Get the default connection name. + * + * @return string + * @static + */ + public static function getDefaultConnection(){ + return \Illuminate\Database\DatabaseManager::getDefaultConnection(); + } + + /** + * Set the default connection name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultConnection($name){ + \Illuminate\Database\DatabaseManager::setDefaultConnection($name); + } + + /** + * Register an extension connection resolver. + * + * @param string $name + * @param callable $resolver + * @return void + * @static + */ + public static function extend($name, $resolver){ + \Illuminate\Database\DatabaseManager::extend($name, $resolver); + } + + /** + * Return all of the created connections. + * + * @return array + * @static + */ + public static function getConnections(){ + return \Illuminate\Database\DatabaseManager::getConnections(); + } + + /** + * Set the query grammar to the default implementation. + * + * @return void + * @static + */ + public static function useDefaultQueryGrammar(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::useDefaultQueryGrammar(); + } + + /** + * Set the schema grammar to the default implementation. + * + * @return void + * @static + */ + public static function useDefaultSchemaGrammar(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::useDefaultSchemaGrammar(); + } + + /** + * Set the query post processor to the default implementation. + * + * @return void + * @static + */ + public static function useDefaultPostProcessor(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::useDefaultPostProcessor(); + } + + /** + * Get a schema builder instance for the connection. + * + * @return \Illuminate\Database\Schema\Builder + * @static + */ + public static function getSchemaBuilder(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getSchemaBuilder(); + } + + /** + * 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 + return \Illuminate\Database\SQLiteConnection::table($table); + } + + /** + * 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 + return \Illuminate\Database\SQLiteConnection::raw($value); + } + + /** + * Run a select statement and return a single result. + * + * @param string $query + * @param array $bindings + * @return mixed + * @static + */ + public static function selectOne($query, $bindings = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::selectOne($query, $bindings); + } + + /** + * Run a select statement against the database. + * + * @param string $query + * @param array $bindings + * @return array + * @static + */ + public static function selectFromWriteConnection($query, $bindings = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 = array(), $useReadPdo = true){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::select($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 = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 = array()){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::unprepared($query); + } + + /** + * Prepare the query bindings for execution. + * + * @param array $bindings + * @return array + * @static + */ + public static function prepareBindings($bindings){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::prepareBindings($bindings); + } + + /** + * Execute a Closure within a transaction. + * + * @param \Closure $callback + * @return mixed + * @throws \Throwable + * @static + */ + public static function transaction($callback){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::transaction($callback); + } + + /** + * Start a new database transaction. + * + * @return void + * @static + */ + public static function beginTransaction(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::beginTransaction(); + } + + /** + * Commit the active database transaction. + * + * @return void + * @static + */ + public static function commit(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::commit(); + } + + /** + * Rollback the active database transaction. + * + * @return void + * @static + */ + public static function rollBack(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::rollBack(); + } + + /** + * Get the number of active transactions. + * + * @return int + * @static + */ + public static function transactionLevel(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::transactionLevel(); + } + + /** + * 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 + return \Illuminate\Database\SQLiteConnection::pretend($callback); + } + + /** + * 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 + \Illuminate\Database\SQLiteConnection::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 + \Illuminate\Database\SQLiteConnection::listen($callback); + } + + /** + * Is Doctrine available? + * + * @return bool + * @static + */ + public static function isDoctrineAvailable(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::getDoctrineSchemaManager(); + } + + /** + * Get the Doctrine DBAL database connection instance. + * + * @return \Doctrine\DBAL\Connection + * @static + */ + public static function getDoctrineConnection(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getDoctrineConnection(); + } + + /** + * Get the current PDO connection. + * + * @return \PDO + * @static + */ + public static function getPdo(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getPdo(); + } + + /** + * Get the current PDO connection used for reading. + * + * @return \PDO + * @static + */ + public static function getReadPdo(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getReadPdo(); + } + + /** + * Set the PDO connection. + * + * @param \PDO|null $pdo + * @return $this + * @static + */ + public static function setPdo($pdo){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::setPdo($pdo); + } + + /** + * Set the PDO connection used for reading. + * + * @param \PDO|null $pdo + * @return $this + * @static + */ + public static function setReadPdo($pdo){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::setReadPdo($pdo); + } + + /** + * Set the reconnect instance on the connection. + * + * @param callable $reconnector + * @return $this + * @static + */ + public static function setReconnector($reconnector){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::setReconnector($reconnector); + } + + /** + * Get the database connection name. + * + * @return string|null + * @static + */ + public static function getName(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getName(); + } + + /** + * Get an option from the configuration options. + * + * @param string $option + * @return mixed + * @static + */ + public static function getConfig($option){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getConfig($option); + } + + /** + * Get the PDO driver name. + * + * @return string + * @static + */ + public static function getDriverName(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::getQueryGrammar(); + } + + /** + * Set the query grammar used by the connection. + * + * @param \Illuminate\Database\Query\Grammars\Grammar $grammar + * @return void + * @static + */ + public static function setQueryGrammar($grammar){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::getSchemaGrammar(); + } + + /** + * Set the schema grammar used by the connection. + * + * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar + * @return void + * @static + */ + public static function setSchemaGrammar($grammar){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::getPostProcessor(); + } + + /** + * Set the query post processor used by the connection. + * + * @param \Illuminate\Database\Query\Processors\Processor $processor + * @return void + * @static + */ + public static function setPostProcessor($processor){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::getEventDispatcher(); + } + + /** + * Set the event dispatcher instance on the connection. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setEventDispatcher($events){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::setEventDispatcher($events); + } + + /** + * Determine if the connection in a "dry run". + * + * @return bool + * @static + */ + public static function pretending(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::pretending(); + } + + /** + * Get the default fetch mode for the connection. + * + * @return int + * @static + */ + public static function getFetchMode(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getFetchMode(); + } + + /** + * Set the default fetch mode for the connection. + * + * @param int $fetchMode + * @return int + * @static + */ + public static function setFetchMode($fetchMode){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::setFetchMode($fetchMode); + } + + /** + * Get the connection query log. + * + * @return array + * @static + */ + public static function getQueryLog(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getQueryLog(); + } + + /** + * Clear the query log. + * + * @return void + * @static + */ + public static function flushQueryLog(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::flushQueryLog(); + } + + /** + * Enable the query log on the connection. + * + * @return void + * @static + */ + public static function enableQueryLog(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::enableQueryLog(); + } + + /** + * Disable the query log on the connection. + * + * @return void + * @static + */ + public static function disableQueryLog(){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::disableQueryLog(); + } + + /** + * Determine whether we're logging queries. + * + * @return bool + * @static + */ + public static function logging(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::logging(); + } + + /** + * Get the name of the connected database. + * + * @return string + * @static + */ + public static function getDatabaseName(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getDatabaseName(); + } + + /** + * Set the name of the connected database. + * + * @param string $database + * @return string + * @static + */ + public static function setDatabaseName($database){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::setDatabaseName($database); + } + + /** + * Get the table prefix for the connection. + * + * @return string + * @static + */ + public static function getTablePrefix(){ + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\SQLiteConnection::getTablePrefix(); + } + + /** + * Set the table prefix in use by the connection. + * + * @param string $prefix + * @return void + * @static + */ + public static function setTablePrefix($prefix){ + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\SQLiteConnection::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 + return \Illuminate\Database\SQLiteConnection::withTablePrefix($grammar); + } + + } + + + class Eloquent extends \Illuminate\Database\Eloquent\Model{ + + /** + * Find a model by its primary key. + * + * @param mixed $id + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null + * @static + */ + public static function find($id, $columns = array()){ + return \Illuminate\Database\Eloquent\Builder::find($id, $columns); + } + + /** + * Find a model by its primary key. + * + * @param array $ids + * @param array $columns + * @return \Illuminate\Database\Eloquent\Collection + * @static + */ + public static function findMany($ids, $columns = array()){ + return \Illuminate\Database\Eloquent\Builder::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 + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @static + */ + public static function findOrFail($id, $columns = array()){ + return \Illuminate\Database\Eloquent\Builder::findOrFail($id, $columns); + } + + /** + * Execute the query and get the first result. + * + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model|static|null + * @static + */ + public static function first($columns = array()){ + return \Illuminate\Database\Eloquent\Builder::first($columns); + } + + /** + * 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 = array()){ + return \Illuminate\Database\Eloquent\Builder::firstOrFail($columns); + } + + /** + * Execute the query as a "select" statement. + * + * @param array $columns + * @return \Illuminate\Database\Eloquent\Collection|static[] + * @static + */ + public static function get($columns = array()){ + return \Illuminate\Database\Eloquent\Builder::get($columns); + } + + /** + * Get a single column's value from the first result of a query. + * + * @param string $column + * @return mixed + * @static + */ + public static function value($column){ + return \Illuminate\Database\Eloquent\Builder::value($column); + } + + /** + * Get a single column's value from the first result of a query. + * + * This is an alias for the "value" method. + * + * @param string $column + * @return mixed + * @deprecated since version 5.1. + * @static + */ + public static function pluck($column){ + return \Illuminate\Database\Eloquent\Builder::pluck($column); + } + + /** + * Chunk the results of the query. + * + * @param int $count + * @param callable $callback + * @return void + * @static + */ + public static function chunk($count, $callback){ + \Illuminate\Database\Eloquent\Builder::chunk($count, $callback); + } + + /** + * Get an array with the values of a given column. + * + * @param string $column + * @param string $key + * @return \Illuminate\Support\Collection + * @static + */ + public static function lists($column, $key = null){ + return \Illuminate\Database\Eloquent\Builder::lists($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 = array(), $pageName = 'page', $page = null){ + return \Illuminate\Database\Eloquent\Builder::paginate($perPage, $columns, $pageName, $page); + } + + /** + * Paginate the given query into a simple paginator. + * + * @param int $perPage + * @param array $columns + * @param string $pageName + * @return \Illuminate\Contracts\Pagination\Paginator + * @static + */ + public static function simplePaginate($perPage = null, $columns = array(), $pageName = 'page'){ + return \Illuminate\Database\Eloquent\Builder::simplePaginate($perPage, $columns, $pageName); + } + + /** + * Register a replacement for the default delete function. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function onDelete($callback){ + \Illuminate\Database\Eloquent\Builder::onDelete($callback); + } + + /** + * Get the hydrated models without eager loading. + * + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model[] + * @static + */ + public static function getModels($columns = array()){ + return \Illuminate\Database\Eloquent\Builder::getModels($columns); + } + + /** + * Eager load the relationships for the models. + * + * @param array $models + * @return array + * @static + */ + public static function eagerLoadRelations($models){ + return \Illuminate\Database\Eloquent\Builder::eagerLoadRelations($models); + } + + /** + * Add a basic where clause to the query. + * + * @param string $column + * @param string $operator + * @param mixed $value + * @param string $boolean + * @return $this + * @static + */ + public static function where($column, $operator = null, $value = null, $boolean = 'and'){ + return \Illuminate\Database\Eloquent\Builder::where($column, $operator, $value, $boolean); + } + + /** + * Add an "or where" clause to the query. + * + * @param string $column + * @param string $operator + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhere($column, $operator = null, $value = null){ + return \Illuminate\Database\Eloquent\Builder::orWhere($column, $operator, $value); + } + + /** + * Add a relationship count condition to the query. + * + * @param string $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){ + return \Illuminate\Database\Eloquent\Builder::has($relation, $operator, $count, $boolean, $callback); + } + + /** + * Add a relationship count 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){ + return \Illuminate\Database\Eloquent\Builder::doesntHave($relation, $boolean, $callback); + } + + /** + * Add a relationship count condition to the query with where clauses. + * + * @param string $relation + * @param \Closure $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereHas($relation, $callback, $operator = '>=', $count = 1){ + return \Illuminate\Database\Eloquent\Builder::whereHas($relation, $callback, $operator, $count); + } + + /** + * Add a relationship count 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){ + return \Illuminate\Database\Eloquent\Builder::whereDoesntHave($relation, $callback); + } + + /** + * Add a relationship count 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){ + return \Illuminate\Database\Eloquent\Builder::orHas($relation, $operator, $count); + } + + /** + * Add a relationship count 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, $operator = '>=', $count = 1){ + return \Illuminate\Database\Eloquent\Builder::orWhereHas($relation, $callback, $operator, $count); + } + + /** + * Get the underlying query builder instance. + * + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function getQuery(){ + return \Illuminate\Database\Eloquent\Builder::getQuery(); + } + + /** + * Set the underlying query builder instance. + * + * @param \Illuminate\Database\Query\Builder $query + * @return $this + * @static + */ + public static function setQuery($query){ + return \Illuminate\Database\Eloquent\Builder::setQuery($query); + } + + /** + * Get the relationships being eagerly loaded. + * + * @return array + * @static + */ + public static function getEagerLoads(){ + return \Illuminate\Database\Eloquent\Builder::getEagerLoads(); + } + + /** + * Set the relationships being eagerly loaded. + * + * @param array $eagerLoad + * @return $this + * @static + */ + public static function setEagerLoads($eagerLoad){ + return \Illuminate\Database\Eloquent\Builder::setEagerLoads($eagerLoad); + } + + /** + * Get the model instance being queried. + * + * @return \Illuminate\Database\Eloquent\Model + * @static + */ + public static function getModel(){ + return \Illuminate\Database\Eloquent\Builder::getModel(); + } + + /** + * Set a model instance for the model being queried. + * + * @param \Illuminate\Database\Eloquent\Model $model + * @return $this + * @static + */ + public static function setModel($model){ + return \Illuminate\Database\Eloquent\Builder::setModel($model); + } + + /** + * Extend the builder with a given callback. + * + * @param string $name + * @param \Closure $callback + * @return void + * @static + */ + public static function macro($name, $callback){ + \Illuminate\Database\Eloquent\Builder::macro($name, $callback); + } + + /** + * Get the given macro by name. + * + * @param string $name + * @return \Closure + * @static + */ + public static function getMacro($name){ + return \Illuminate\Database\Eloquent\Builder::getMacro($name); + } + + /** + * Set the columns to be selected. + * + * @param array $columns + * @return $this + * @static + */ + public static function select($columns = array()){ + return \Illuminate\Database\Query\Builder::select($columns); + } + + /** + * 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 = array()){ + return \Illuminate\Database\Query\Builder::selectRaw($expression, $bindings); + } + + /** + * Add a subselect expression to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function selectSub($query, $as){ + return \Illuminate\Database\Query\Builder::selectSub($query, $as); + } + + /** + * Add a new select column to the query. + * + * @param mixed $column + * @return $this + * @static + */ + public static function addSelect($column){ + return \Illuminate\Database\Query\Builder::addSelect($column); + } + + /** + * Force the query to only return distinct results. + * + * @return $this + * @static + */ + public static function distinct(){ + return \Illuminate\Database\Query\Builder::distinct(); + } + + /** + * Set the table which the query is targeting. + * + * @param string $table + * @return $this + * @static + */ + public static function from($table){ + return \Illuminate\Database\Query\Builder::from($table); + } + + /** + * Add a join clause to the query. + * + * @param string $table + * @param string $one + * @param string $operator + * @param string $two + * @param string $type + * @param bool $where + * @return $this + * @static + */ + public static function join($table, $one, $operator = null, $two = null, $type = 'inner', $where = false){ + return \Illuminate\Database\Query\Builder::join($table, $one, $operator, $two, $type, $where); + } + + /** + * Add a "join where" clause to the query. + * + * @param string $table + * @param string $one + * @param string $operator + * @param string $two + * @param string $type + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function joinWhere($table, $one, $operator, $two, $type = 'inner'){ + return \Illuminate\Database\Query\Builder::joinWhere($table, $one, $operator, $two, $type); + } + + /** + * Add a left join to the query. + * + * @param string $table + * @param string $first + * @param string $operator + * @param string $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function leftJoin($table, $first, $operator = null, $second = null){ + return \Illuminate\Database\Query\Builder::leftJoin($table, $first, $operator, $second); + } + + /** + * Add a "join where" clause to the query. + * + * @param string $table + * @param string $one + * @param string $operator + * @param string $two + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function leftJoinWhere($table, $one, $operator, $two){ + return \Illuminate\Database\Query\Builder::leftJoinWhere($table, $one, $operator, $two); + } + + /** + * Add a right join to the query. + * + * @param string $table + * @param string $first + * @param string $operator + * @param string $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function rightJoin($table, $first, $operator = null, $second = null){ + return \Illuminate\Database\Query\Builder::rightJoin($table, $first, $operator, $second); + } + + /** + * Add a "right join where" clause to the query. + * + * @param string $table + * @param string $one + * @param string $operator + * @param string $two + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function rightJoinWhere($table, $one, $operator, $two){ + return \Illuminate\Database\Query\Builder::rightJoinWhere($table, $one, $operator, $two); + } + + /** + * Add a raw where clause to the query. + * + * @param string $sql + * @param array $bindings + * @param string $boolean + * @return $this + * @static + */ + public static function whereRaw($sql, $bindings = array(), $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::whereRaw($sql, $bindings, $boolean); + } + + /** + * Add a raw or where clause to the query. + * + * @param string $sql + * @param array $bindings + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereRaw($sql, $bindings = array()){ + return \Illuminate\Database\Query\Builder::orWhereRaw($sql, $bindings); + } + + /** + * Add a where between statement to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @param bool $not + * @return $this + * @static + */ + public static function whereBetween($column, $values, $boolean = 'and', $not = false){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::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'){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::orWhereNotBetween($column, $values); + } + + /** + * 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'){ + return \Illuminate\Database\Query\Builder::whereNested($callback, $boolean); + } + + /** + * Add another query builder as a nested where to the query builder. + * + * @param \Illuminate\Database\Query\Builder|static $query + * @param string $boolean + * @return $this + * @static + */ + public static function addNestedWhereQuery($query, $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::addNestedWhereQuery($query, $boolean); + } + + /** + * Add an exists clause to the query. + * + * @param \Closure $callback + * @param string $boolean + * @param bool $not + * @return $this + * @static + */ + public static function whereExists($callback, $boolean = 'and', $not = false){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::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'){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::orWhereNotExists($callback); + } + + /** + * Add a "where in" clause to the query. + * + * @param string $column + * @param mixed $values + * @param string $boolean + * @param bool $not + * @return $this + * @static + */ + public static function whereIn($column, $values, $boolean = 'and', $not = false){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::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'){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::orWhereNotIn($column, $values); + } + + /** + * Add a "where null" clause to the query. + * + * @param string $column + * @param string $boolean + * @param bool $not + * @return $this + * @static + */ + public static function whereNull($column, $boolean = 'and', $not = false){ + return \Illuminate\Database\Query\Builder::whereNull($column, $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){ + return \Illuminate\Database\Query\Builder::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'){ + return \Illuminate\Database\Query\Builder::whereNotNull($column, $boolean); + } + + /** + * 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){ + return \Illuminate\Database\Query\Builder::orWhereNotNull($column); + } + + /** + * Add a "where date" statement to the query. + * + * @param string $column + * @param string $operator + * @param int $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereDate($column, $operator, $value, $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::whereDate($column, $operator, $value, $boolean); + } + + /** + * Add a "where day" statement to the query. + * + * @param string $column + * @param string $operator + * @param int $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereDay($column, $operator, $value, $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::whereDay($column, $operator, $value, $boolean); + } + + /** + * Add a "where month" statement to the query. + * + * @param string $column + * @param string $operator + * @param int $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereMonth($column, $operator, $value, $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::whereMonth($column, $operator, $value, $boolean); + } + + /** + * Add a "where year" statement to the query. + * + * @param string $column + * @param string $operator + * @param int $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereYear($column, $operator, $value, $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::whereYear($column, $operator, $value, $boolean); + } + + /** + * Handles dynamic "where" clauses to the query. + * + * @param string $method + * @param string $parameters + * @return $this + * @static + */ + public static function dynamicWhere($method, $parameters){ + return \Illuminate\Database\Query\Builder::dynamicWhere($method, $parameters); + } + + /** + * Add a "group by" clause to the query. + * + * @param array|string $column,... + * @return $this + * @static + */ + public static function groupBy(){ + return \Illuminate\Database\Query\Builder::groupBy(); + } + + /** + * Add a "having" clause to the query. + * + * @param string $column + * @param string $operator + * @param string $value + * @param string $boolean + * @return $this + * @static + */ + public static function having($column, $operator = null, $value = null, $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::having($column, $operator, $value, $boolean); + } + + /** + * Add a "or having" clause to the query. + * + * @param string $column + * @param string $operator + * @param string $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orHaving($column, $operator = null, $value = null){ + return \Illuminate\Database\Query\Builder::orHaving($column, $operator, $value); + } + + /** + * Add a raw having clause to the query. + * + * @param string $sql + * @param array $bindings + * @param string $boolean + * @return $this + * @static + */ + public static function havingRaw($sql, $bindings = array(), $boolean = 'and'){ + return \Illuminate\Database\Query\Builder::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 = array()){ + return \Illuminate\Database\Query\Builder::orHavingRaw($sql, $bindings); + } + + /** + * Add an "order by" clause to the query. + * + * @param string $column + * @param string $direction + * @return $this + * @static + */ + public static function orderBy($column, $direction = 'asc'){ + return \Illuminate\Database\Query\Builder::orderBy($column, $direction); + } + + /** + * Add an "order by" clause for a timestamp to the query. + * + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function latest($column = 'created_at'){ + return \Illuminate\Database\Query\Builder::latest($column); + } + + /** + * Add an "order by" clause for a timestamp to the query. + * + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function oldest($column = 'created_at'){ + return \Illuminate\Database\Query\Builder::oldest($column); + } + + /** + * Add a raw "order by" clause to the query. + * + * @param string $sql + * @param array $bindings + * @return $this + * @static + */ + public static function orderByRaw($sql, $bindings = array()){ + return \Illuminate\Database\Query\Builder::orderByRaw($sql, $bindings); + } + + /** + * Set the "offset" value of the query. + * + * @param int $value + * @return $this + * @static + */ + public static function offset($value){ + return \Illuminate\Database\Query\Builder::offset($value); + } + + /** + * Alias to set the "offset" value of the query. + * + * @param int $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function skip($value){ + return \Illuminate\Database\Query\Builder::skip($value); + } + + /** + * Set the "limit" value of the query. + * + * @param int $value + * @return $this + * @static + */ + public static function limit($value){ + return \Illuminate\Database\Query\Builder::limit($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){ + return \Illuminate\Database\Query\Builder::take($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){ + return \Illuminate\Database\Query\Builder::forPage($page, $perPage); + } + + /** + * 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){ + return \Illuminate\Database\Query\Builder::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){ + return \Illuminate\Database\Query\Builder::unionAll($query); + } + + /** + * Lock the selected rows in the table. + * + * @param bool $value + * @return $this + * @static + */ + public static function lock($value = true){ + return \Illuminate\Database\Query\Builder::lock($value); + } + + /** + * Lock the selected rows in the table for updating. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function lockForUpdate(){ + return \Illuminate\Database\Query\Builder::lockForUpdate(); + } + + /** + * Share lock the selected rows in the table. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function sharedLock(){ + return \Illuminate\Database\Query\Builder::sharedLock(); + } + + /** + * Get the SQL representation of the query. + * + * @return string + * @static + */ + public static function toSql(){ + return \Illuminate\Database\Query\Builder::toSql(); + } + + /** + * Execute the query as a fresh "select" statement. + * + * @param array $columns + * @return array|static[] + * @static + */ + public static function getFresh($columns = array()){ + return \Illuminate\Database\Query\Builder::getFresh($columns); + } + + /** + * Get the count of the total records for the paginator. + * + * @param array $columns + * @return int + * @static + */ + public static function getCountForPagination($columns = array()){ + return \Illuminate\Database\Query\Builder::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 = null){ + return \Illuminate\Database\Query\Builder::implode($column, $glue); + } + + /** + * Determine if any rows exist for the current query. + * + * @return bool + * @static + */ + public static function exists(){ + return \Illuminate\Database\Query\Builder::exists(); + } + + /** + * Retrieve the "count" result of the query. + * + * @param string $columns + * @return int + * @static + */ + public static function count($columns = '*'){ + return \Illuminate\Database\Query\Builder::count($columns); + } + + /** + * Retrieve the minimum value of a given column. + * + * @param string $column + * @return float|int + * @static + */ + public static function min($column){ + return \Illuminate\Database\Query\Builder::min($column); + } + + /** + * Retrieve the maximum value of a given column. + * + * @param string $column + * @return float|int + * @static + */ + public static function max($column){ + return \Illuminate\Database\Query\Builder::max($column); + } + + /** + * Retrieve the sum of the values of a given column. + * + * @param string $column + * @return float|int + * @static + */ + public static function sum($column){ + return \Illuminate\Database\Query\Builder::sum($column); + } + + /** + * Retrieve the average of the values of a given column. + * + * @param string $column + * @return float|int + * @static + */ + public static function avg($column){ + return \Illuminate\Database\Query\Builder::avg($column); + } + + /** + * Execute an aggregate function on the database. + * + * @param string $function + * @param array $columns + * @return float|int + * @static + */ + public static function aggregate($function, $columns = array()){ + return \Illuminate\Database\Query\Builder::aggregate($function, $columns); + } + + /** + * Insert a new record into the database. + * + * @param array $values + * @return bool + * @static + */ + public static function insert($values){ + return \Illuminate\Database\Query\Builder::insert($values); + } + + /** + * Insert a new record and get the value of the primary key. + * + * @param array $values + * @param string $sequence + * @return int + * @static + */ + public static function insertGetId($values, $sequence = null){ + return \Illuminate\Database\Query\Builder::insertGetId($values, $sequence); + } + + /** + * Run a truncate statement on the table. + * + * @return void + * @static + */ + public static function truncate(){ + \Illuminate\Database\Query\Builder::truncate(); + } + + /** + * Merge an array of where clauses and bindings. + * + * @param array $wheres + * @param array $bindings + * @return void + * @static + */ + public static function mergeWheres($wheres, $bindings){ + \Illuminate\Database\Query\Builder::mergeWheres($wheres, $bindings); + } + + /** + * Create a raw database expression. + * + * @param mixed $value + * @return \Illuminate\Database\Query\Expression + * @static + */ + public static function raw($value){ + return \Illuminate\Database\Query\Builder::raw($value); + } + + /** + * Get the current query value bindings in a flattened array. + * + * @return array + * @static + */ + public static function getBindings(){ + return \Illuminate\Database\Query\Builder::getBindings(); + } + + /** + * Get the raw array of bindings. + * + * @return array + * @static + */ + public static function getRawBindings(){ + return \Illuminate\Database\Query\Builder::getRawBindings(); + } + + /** + * Set the bindings on the query builder. + * + * @param array $bindings + * @param string $type + * @return $this + * @throws \InvalidArgumentException + * @static + */ + public static function setBindings($bindings, $type = 'where'){ + return \Illuminate\Database\Query\Builder::setBindings($bindings, $type); + } + + /** + * Add a binding to the query. + * + * @param mixed $value + * @param string $type + * @return $this + * @throws \InvalidArgumentException + * @static + */ + public static function addBinding($value, $type = 'where'){ + return \Illuminate\Database\Query\Builder::addBinding($value, $type); + } + + /** + * Merge an array of bindings into our bindings. + * + * @param \Illuminate\Database\Query\Builder $query + * @return $this + * @static + */ + public static function mergeBindings($query){ + return \Illuminate\Database\Query\Builder::mergeBindings($query); + } + + /** + * Get the database query processor instance. + * + * @return \Illuminate\Database\Query\Processors\Processor + * @static + */ + public static function getProcessor(){ + return \Illuminate\Database\Query\Builder::getProcessor(); + } + + /** + * Get the query grammar instance. + * + * @return \Illuminate\Database\Query\Grammars\Grammar + * @static + */ + public static function getGrammar(){ + return \Illuminate\Database\Query\Builder::getGrammar(); + } + + /** + * Use the write pdo for query. + * + * @return $this + * @static + */ + public static function useWritePdo(){ + return \Illuminate\Database\Query\Builder::useWritePdo(); + } + + } + + + class Event extends \Illuminate\Support\Facades\Event{ + + /** + * Register an event listener with the dispatcher. + * + * @param string|array $events + * @param mixed $listener + * @param int $priority + * @return void + * @static + */ + public static function listen($events, $listener, $priority = 0){ + \Illuminate\Events\Dispatcher::listen($events, $listener, $priority); + } + + /** + * Determine if a given event has listeners. + * + * @param string $eventName + * @return bool + * @static + */ + public static function hasListeners($eventName){ + return \Illuminate\Events\Dispatcher::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 = array()){ + \Illuminate\Events\Dispatcher::push($event, $payload); + } + + /** + * Register an event subscriber with the dispatcher. + * + * @param object|string $subscriber + * @return void + * @static + */ + public static function subscribe($subscriber){ + \Illuminate\Events\Dispatcher::subscribe($subscriber); + } + + /** + * Fire an event until the first non-null response is returned. + * + * @param string|object $event + * @param array $payload + * @return mixed + * @static + */ + public static function until($event, $payload = array()){ + return \Illuminate\Events\Dispatcher::until($event, $payload); + } + + /** + * Flush a set of pushed events. + * + * @param string $event + * @return void + * @static + */ + public static function flush($event){ + \Illuminate\Events\Dispatcher::flush($event); + } + + /** + * Get the event that is currently firing. + * + * @return string + * @static + */ + public static function firing(){ + return \Illuminate\Events\Dispatcher::firing(); + } + + /** + * Fire an event and call the listeners. + * + * @param string|object $event + * @param mixed $payload + * @param bool $halt + * @return array|null + * @static + */ + public static function fire($event, $payload = array(), $halt = false){ + return \Illuminate\Events\Dispatcher::fire($event, $payload, $halt); + } + + /** + * Get all of the listeners for a given event name. + * + * @param string $eventName + * @return array + * @static + */ + public static function getListeners($eventName){ + return \Illuminate\Events\Dispatcher::getListeners($eventName); + } + + /** + * Register an event listener with the dispatcher. + * + * @param mixed $listener + * @return mixed + * @static + */ + public static function makeListener($listener){ + return \Illuminate\Events\Dispatcher::makeListener($listener); + } + + /** + * Create a class based listener using the IoC container. + * + * @param mixed $listener + * @return \Closure + * @static + */ + public static function createClassListener($listener){ + return \Illuminate\Events\Dispatcher::createClassListener($listener); + } + + /** + * Remove a set of listeners from the dispatcher. + * + * @param string $event + * @return void + * @static + */ + public static function forget($event){ + \Illuminate\Events\Dispatcher::forget($event); + } + + /** + * Forget all of the pushed listeners. + * + * @return void + * @static + */ + public static function forgetPushed(){ + \Illuminate\Events\Dispatcher::forgetPushed(); + } + + /** + * Set the queue resolver implementation. + * + * @param callable $resolver + * @return $this + * @static + */ + public static function setQueueResolver($resolver){ + return \Illuminate\Events\Dispatcher::setQueueResolver($resolver); + } + + } + + + class File extends \Illuminate\Support\Facades\File{ + + /** + * Determine if a file exists. + * + * @param string $path + * @return bool + * @static + */ + public static function exists($path){ + return \Illuminate\Filesystem\Filesystem::exists($path); + } + + /** + * Get the contents of a file. + * + * @param string $path + * @return string + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function get($path){ + return \Illuminate\Filesystem\Filesystem::get($path); + } + + /** + * Get the returned value of a file. + * + * @param string $path + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function getRequire($path){ + return \Illuminate\Filesystem\Filesystem::getRequire($path); + } + + /** + * Require the given file once. + * + * @param string $file + * @return mixed + * @static + */ + public static function requireOnce($file){ + return \Illuminate\Filesystem\Filesystem::requireOnce($file); + } + + /** + * Write the contents of a file. + * + * @param string $path + * @param string $contents + * @param bool $lock + * @return int + * @static + */ + public static function put($path, $contents, $lock = false){ + return \Illuminate\Filesystem\Filesystem::put($path, $contents, $lock); + } + + /** + * Prepend to a file. + * + * @param string $path + * @param string $data + * @return int + * @static + */ + public static function prepend($path, $data){ + return \Illuminate\Filesystem\Filesystem::prepend($path, $data); + } + + /** + * Append to a file. + * + * @param string $path + * @param string $data + * @return int + * @static + */ + public static function append($path, $data){ + return \Illuminate\Filesystem\Filesystem::append($path, $data); + } + + /** + * Delete the file at a given path. + * + * @param string|array $paths + * @return bool + * @static + */ + public static function delete($paths){ + return \Illuminate\Filesystem\Filesystem::delete($paths); + } + + /** + * Move a file to a new location. + * + * @param string $path + * @param string $target + * @return bool + * @static + */ + public static function move($path, $target){ + return \Illuminate\Filesystem\Filesystem::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){ + return \Illuminate\Filesystem\Filesystem::copy($path, $target); + } + + /** + * Extract the file name from a file path. + * + * @param string $path + * @return string + * @static + */ + public static function name($path){ + return \Illuminate\Filesystem\Filesystem::name($path); + } + + /** + * Extract the file extension from a file path. + * + * @param string $path + * @return string + * @static + */ + public static function extension($path){ + return \Illuminate\Filesystem\Filesystem::extension($path); + } + + /** + * Get the file type of a given file. + * + * @param string $path + * @return string + * @static + */ + public static function type($path){ + return \Illuminate\Filesystem\Filesystem::type($path); + } + + /** + * Get the mime-type of a given file. + * + * @param string $path + * @return string|false + * @static + */ + public static function mimeType($path){ + return \Illuminate\Filesystem\Filesystem::mimeType($path); + } + + /** + * Get the file size of a given file. + * + * @param string $path + * @return int + * @static + */ + public static function size($path){ + return \Illuminate\Filesystem\Filesystem::size($path); + } + + /** + * Get the file's last modification time. + * + * @param string $path + * @return int + * @static + */ + public static function lastModified($path){ + return \Illuminate\Filesystem\Filesystem::lastModified($path); + } + + /** + * Determine if the given path is a directory. + * + * @param string $directory + * @return bool + * @static + */ + public static function isDirectory($directory){ + return \Illuminate\Filesystem\Filesystem::isDirectory($directory); + } + + /** + * Determine if the given path is writable. + * + * @param string $path + * @return bool + * @static + */ + public static function isWritable($path){ + return \Illuminate\Filesystem\Filesystem::isWritable($path); + } + + /** + * Determine if the given path is a file. + * + * @param string $file + * @return bool + * @static + */ + public static function isFile($file){ + return \Illuminate\Filesystem\Filesystem::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){ + return \Illuminate\Filesystem\Filesystem::glob($pattern, $flags); + } + + /** + * Get an array of all files in a directory. + * + * @param string $directory + * @return array + * @static + */ + public static function files($directory){ + return \Illuminate\Filesystem\Filesystem::files($directory); + } + + /** + * Get all of the files from the given directory (recursive). + * + * @param string $directory + * @return array + * @static + */ + public static function allFiles($directory){ + return \Illuminate\Filesystem\Filesystem::allFiles($directory); + } + + /** + * Get all of the directories within a given directory. + * + * @param string $directory + * @return array + * @static + */ + public static function directories($directory){ + return \Illuminate\Filesystem\Filesystem::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){ + return \Illuminate\Filesystem\Filesystem::makeDirectory($path, $mode, $recursive, $force); + } + + /** + * Copy a directory from one location to another. + * + * @param string $directory + * @param string $destination + * @param int $options + * @return bool + * @static + */ + public static function copyDirectory($directory, $destination, $options = null){ + return \Illuminate\Filesystem\Filesystem::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){ + return \Illuminate\Filesystem\Filesystem::deleteDirectory($directory, $preserve); + } + + /** + * Empty the specified directory of all files and folders. + * + * @param string $directory + * @return bool + * @static + */ + public static function cleanDirectory($directory){ + return \Illuminate\Filesystem\Filesystem::cleanDirectory($directory); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param callable $macro + * @return void + * @static + */ + public static function macro($name, $macro){ + \Illuminate\Filesystem\Filesystem::macro($name, $macro); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name){ + return \Illuminate\Filesystem\Filesystem::hasMacro($name); + } + + } + + + class Gate extends \Illuminate\Support\Facades\Gate{ + + /** + * Determine if a given ability has been defined. + * + * @param string $ability + * @return bool + * @static + */ + public static function has($ability){ + return \Illuminate\Auth\Access\Gate::has($ability); + } + + /** + * Define a new ability. + * + * @param string $ability + * @param callable|string $callback + * @return $this + * @throws \InvalidArgumentException + * @static + */ + public static function define($ability, $callback){ + return \Illuminate\Auth\Access\Gate::define($ability, $callback); + } + + /** + * Define a policy class for a given class type. + * + * @param string $class + * @param string $policy + * @return $this + * @static + */ + public static function policy($class, $policy){ + return \Illuminate\Auth\Access\Gate::policy($class, $policy); + } + + /** + * Register a callback to run before all Gate checks. + * + * @param callable $callback + * @return $this + * @static + */ + public static function before($callback){ + return \Illuminate\Auth\Access\Gate::before($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 = array()){ + return \Illuminate\Auth\Access\Gate::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 = array()){ + return \Illuminate\Auth\Access\Gate::denies($ability, $arguments); + } + + /** + * 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 check($ability, $arguments = array()){ + return \Illuminate\Auth\Access\Gate::check($ability, $arguments); + } + + /** + * Get a policy instance for a given class. + * + * @param object|string $class + * @return mixed + * @throws \InvalidArgumentException + * @static + */ + public static function getPolicyFor($class){ + return \Illuminate\Auth\Access\Gate::getPolicyFor($class); + } + + /** + * Build a policy class instance of the given type. + * + * @param object|string $class + * @return mixed + * @static + */ + public static function resolvePolicy($class){ + return \Illuminate\Auth\Access\Gate::resolvePolicy($class); + } + + /** + * Get a guard instance for the given user. + * + * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user + * @return static + * @static + */ + public static function forUser($user){ + return \Illuminate\Auth\Access\Gate::forUser($user); + } + + } + + + class Hash extends \Illuminate\Support\Facades\Hash{ + + /** + * Hash the given value. + * + * @param string $value + * @param array $options + * @return string + * @throws \RuntimeException + * @static + */ + public static function make($value, $options = array()){ + return \Illuminate\Hashing\BcryptHasher::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 = array()){ + return \Illuminate\Hashing\BcryptHasher::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 = array()){ + return \Illuminate\Hashing\BcryptHasher::needsRehash($hashedValue, $options); + } + + /** + * Set the default password work factor. + * + * @param int $rounds + * @return $this + * @static + */ + public static function setRounds($rounds){ + return \Illuminate\Hashing\BcryptHasher::setRounds($rounds); + } + + } + + + class Input extends \Illuminate\Support\Facades\Input{ + + /** + * 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 $this + * @static + */ + public static function instance(){ + return \Illuminate\Http\Request::instance(); + } + + /** + * Get the request method. + * + * @return string + * @static + */ + public static function method(){ + return \Illuminate\Http\Request::method(); + } + + /** + * Get the root URL for the application. + * + * @return string + * @static + */ + public static function root(){ + return \Illuminate\Http\Request::root(); + } + + /** + * Get the URL (no query string) for the request. + * + * @return string + * @static + */ + public static function url(){ + return \Illuminate\Http\Request::url(); + } + + /** + * Get the full URL for the request. + * + * @return string + * @static + */ + public static function fullUrl(){ + return \Illuminate\Http\Request::fullUrl(); + } + + /** + * Get the current path info for the request. + * + * @return string + * @static + */ + public static function path(){ + return \Illuminate\Http\Request::path(); + } + + /** + * Get the current encoded path info for the request. + * + * @return string + * @static + */ + public static function decodedPath(){ + return \Illuminate\Http\Request::decodedPath(); + } + + /** + * Get a segment from the URI (1 based index). + * + * @param int $index + * @param mixed $default + * @return string + * @static + */ + public static function segment($index, $default = null){ + return \Illuminate\Http\Request::segment($index, $default); + } + + /** + * Get all of the segments for the request path. + * + * @return array + * @static + */ + public static function segments(){ + return \Illuminate\Http\Request::segments(); + } + + /** + * Determine if the current request URI matches a pattern. + * + * @param mixed string + * @return bool + * @static + */ + public static function is(){ + return \Illuminate\Http\Request::is(); + } + + /** + * Determine if the request is the result of an AJAX call. + * + * @return bool + * @static + */ + public static function ajax(){ + return \Illuminate\Http\Request::ajax(); + } + + /** + * Determine if the request is the result of an PJAX call. + * + * @return bool + * @static + */ + public static function pjax(){ + return \Illuminate\Http\Request::pjax(); + } + + /** + * Determine if the request is over HTTPS. + * + * @return bool + * @static + */ + public static function secure(){ + return \Illuminate\Http\Request::secure(); + } + + /** + * Returns the client IP address. + * + * @return string + * @static + */ + public static function ip(){ + return \Illuminate\Http\Request::ip(); + } + + /** + * Returns the client IP addresses. + * + * @return array + * @static + */ + public static function ips(){ + return \Illuminate\Http\Request::ips(); + } + + /** + * Determine if the request contains a given input item key. + * + * @param string|array $key + * @return bool + * @static + */ + public static function exists($key){ + return \Illuminate\Http\Request::exists($key); + } + + /** + * Determine if the request contains a non-empty value for an input item. + * + * @param string|array $key + * @return bool + * @static + */ + public static function has($key){ + return \Illuminate\Http\Request::has($key); + } + + /** + * Get all of the input and files for the request. + * + * @return array + * @static + */ + public static function all(){ + return \Illuminate\Http\Request::all(); + } + + /** + * Retrieve an input item from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function input($key = null, $default = null){ + return \Illuminate\Http\Request::input($key, $default); + } + + /** + * Get a subset of the items from the input data. + * + * @param array $keys + * @return array + * @static + */ + public static function only($keys){ + return \Illuminate\Http\Request::only($keys); + } + + /** + * Get all of the input except for a specified array of items. + * + * @param array $keys + * @return array + * @static + */ + public static function except($keys){ + return \Illuminate\Http\Request::except($keys); + } + + /** + * Retrieve a query string item from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function query($key = null, $default = null){ + return \Illuminate\Http\Request::query($key, $default); + } + + /** + * Determine if a cookie is set on the request. + * + * @param string $key + * @return bool + * @static + */ + public static function hasCookie($key){ + return \Illuminate\Http\Request::hasCookie($key); + } + + /** + * Retrieve a cookie from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function cookie($key = null, $default = null){ + return \Illuminate\Http\Request::cookie($key, $default); + } + + /** + * Retrieve a file from the request. + * + * @param string $key + * @param mixed $default + * @return \Symfony\Component\HttpFoundation\File\UploadedFile|array + * @static + */ + public static function file($key = null, $default = null){ + return \Illuminate\Http\Request::file($key, $default); + } + + /** + * Determine if the uploaded data contains a file. + * + * @param string $key + * @return bool + * @static + */ + public static function hasFile($key){ + return \Illuminate\Http\Request::hasFile($key); + } + + /** + * Retrieve a header from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function header($key = null, $default = null){ + return \Illuminate\Http\Request::header($key, $default); + } + + /** + * Retrieve a server variable from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function server($key = null, $default = null){ + return \Illuminate\Http\Request::server($key, $default); + } + + /** + * Retrieve an old input item. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function old($key = null, $default = null){ + return \Illuminate\Http\Request::old($key, $default); + } + + /** + * Flash the input for the current request to the session. + * + * @param string $filter + * @param array $keys + * @return void + * @static + */ + public static function flash($filter = null, $keys = array()){ + \Illuminate\Http\Request::flash($filter, $keys); + } + + /** + * Flash only some of the input to the session. + * + * @param mixed string + * @return void + * @static + */ + public static function flashOnly($keys){ + \Illuminate\Http\Request::flashOnly($keys); + } + + /** + * Flash only some of the input to the session. + * + * @param mixed string + * @return void + * @static + */ + public static function flashExcept($keys){ + \Illuminate\Http\Request::flashExcept($keys); + } + + /** + * Flush all of the old input from the session. + * + * @return void + * @static + */ + public static function flush(){ + \Illuminate\Http\Request::flush(); + } + + /** + * Merge new input into the current request's input array. + * + * @param array $input + * @return void + * @static + */ + public static function merge($input){ + \Illuminate\Http\Request::merge($input); + } + + /** + * Replace the input for the current request. + * + * @param array $input + * @return void + * @static + */ + public static function replace($input){ + \Illuminate\Http\Request::replace($input); + } + + /** + * Get the JSON payload for the request. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function json($key = null, $default = null){ + return \Illuminate\Http\Request::json($key, $default); + } + + /** + * Determine if the given content types match. + * + * @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(){ + return \Illuminate\Http\Request::isJson(); + } + + /** + * Determine if the current request is asking for JSON in return. + * + * @return bool + * @static + */ + public static function wantsJson(){ + return \Illuminate\Http\Request::wantsJson(); + } + + /** + * Determines whether the current requests accepts a given content type. + * + * @param string|array $contentTypes + * @return bool + * @static + */ + public static function accepts($contentTypes){ + return \Illuminate\Http\Request::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){ + return \Illuminate\Http\Request::prefers($contentTypes); + } + + /** + * Determines whether a request accepts JSON. + * + * @return bool + * @static + */ + public static function acceptsJson(){ + return \Illuminate\Http\Request::acceptsJson(); + } + + /** + * Determines whether a request accepts HTML. + * + * @return bool + * @static + */ + public static function acceptsHtml(){ + return \Illuminate\Http\Request::acceptsHtml(); + } + + /** + * Get the data format expected in the response. + * + * @param string $default + * @return string + * @static + */ + public static function format($default = 'html'){ + return \Illuminate\Http\Request::format($default); + } + + /** + * Create an Illuminate request from a Symfony instance. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return \Illuminate\Http\Request + * @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 \Symfony\Component\HttpFoundation\Request The duplicated request + * @api + * @static + */ + public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null){ + return \Illuminate\Http\Request::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(){ + return \Illuminate\Http\Request::session(); + } + + /** + * Get the user making the request. + * + * @return mixed + * @static + */ + public static function user(){ + return \Illuminate\Http\Request::user(); + } + + /** + * Get the route handling the request. + * + * @param string|null $param + * @return object|string + * @static + */ + public static function route($param = null){ + return \Illuminate\Http\Request::route($param); + } + + /** + * Get the user resolver callback. + * + * @return \Closure + * @static + */ + public static function getUserResolver(){ + return \Illuminate\Http\Request::getUserResolver(); + } + + /** + * Set the user resolver callback. + * + * @param \Closure $callback + * @return $this + * @static + */ + public static function setUserResolver($callback){ + return \Illuminate\Http\Request::setUserResolver($callback); + } + + /** + * Get the route resolver callback. + * + * @return \Closure + * @static + */ + public static function getRouteResolver(){ + return \Illuminate\Http\Request::getRouteResolver(); + } + + /** + * Set the route resolver callback. + * + * @param \Closure $callback + * @return $this + * @static + */ + public static function setRouteResolver($callback){ + return \Illuminate\Http\Request::setRouteResolver($callback); + } + + /** + * Determine if the given offset exists. + * + * @param string $offset + * @return bool + * @static + */ + public static function offsetExists($offset){ + return \Illuminate\Http\Request::offsetExists($offset); + } + + /** + * Get the value at the given offset. + * + * @param string $offset + * @return mixed + * @static + */ + public static function offsetGet($offset){ + return \Illuminate\Http\Request::offsetGet($offset); + } + + /** + * Set the value at the given offset. + * + * @param string $offset + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($offset, $value){ + \Illuminate\Http\Request::offsetSet($offset, $value); + } + + /** + * Remove the value at the given offset. + * + * @param string $offset + * @return void + * @static + */ + public static function offsetUnset($offset){ + \Illuminate\Http\Request::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 $content The raw body data + * @api + * @static + */ + public static function initialize($query = array(), $request = array(), $attributes = array(), $cookies = array(), $files = array(), $server = array(), $content = null){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::initialize($query, $request, $attributes, $cookies, $files, $server, $content); + } + + /** + * Creates a new request with values from PHP's super globals. + * + * @return \Symfony\Component\HttpFoundation\Request A new request + * @api + * @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 $content The raw body data + * @return \Symfony\Component\HttpFoundation\Request A Request instance + * @api + * @static + */ + public static function create($uri, $method = 'GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $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 + * + * @api + * @static + */ + public static function overrideGlobals(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function setTrustedProxies($proxies){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedProxies($proxies); + } + + /** + * 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(); + } + + /** + * 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(); + } + + /** + * Sets the name for trusted headers. + * + * The following header keys are supported: + * + * * Request::HEADER_CLIENT_IP: defaults to X-Forwarded-For (see getClientIp()) + * * Request::HEADER_CLIENT_HOST: defaults to X-Forwarded-Host (see getHost()) + * * Request::HEADER_CLIENT_PORT: defaults to X-Forwarded-Port (see getPort()) + * * Request::HEADER_CLIENT_PROTO: defaults to X-Forwarded-Proto (see getScheme() and isSecure()) + * + * Setting an empty value allows to disable the trusted header for the given key. + * + * @param string $key The header key + * @param string $value The header name + * @throws \InvalidArgumentException + * @static + */ + public static function setTrustedHeaderName($key, $value){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedHeaderName($key, $value); + } + + /** + * Gets the trusted proxy header name. + * + * @param string $key The header key + * @return string The header name + * @throws \InvalidArgumentException + * @static + */ + public static function getTrustedHeaderName($key){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedHeaderName($key); + } + + /** + * 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(); + } + + /** + * Gets a "parameter" value. + * + * This method is mainly useful for libraries that want to provide some flexibility. + * + * Order of precedence: GET, PATH, POST + * + * Avoid using this method in controllers: + * + * * slow + * * prefer to get from a "named" source + * + * It is better to explicitly get request parameters from the appropriate + * public property instead (query, attributes, request). + * + * @param string $key the key + * @param mixed $default the default value + * @param bool $deep is parameter deep in multidimensional array + * @return mixed + * @static + */ + public static function get($key, $default = null, $deep = false){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::get($key, $default, $deep); + } + + /** + * Gets the Session. + * + * @return \Symfony\Component\HttpFoundation\SessionInterface|null The session + * @api + * @static + */ + public static function getSession(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getSession(); + } + + /** + * Whether the request contains a Session which was started in one of the + * previous requests. + * + * @return bool + * @api + * @static + */ + public static function hasPreviousSession(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function hasSession(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::hasSession(); + } + + /** + * Sets the Session. + * + * @param \Symfony\Component\HttpFoundation\SessionInterface $session The Session + * @api + * @static + */ + public static function setSession($session){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setSession($session); + } + + /** + * 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 + return \Illuminate\Http\Request::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 "setTrustedHeaderName()" with + * the "client-ip" key. + * + * @return string The client IP address + * @see getClientIps() + * @see http://en.wikipedia.org/wiki/X-Forwarded-For + * @api + * @static + */ + public static function getClientIp(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getClientIp(); + } + + /** + * Returns current script name. + * + * @return string + * @api + * @static + */ + public static function getScriptName(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function getPathInfo(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function getBasePath(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function getBaseUrl(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getBaseUrl(); + } + + /** + * Gets the request's scheme. + * + * @return string + * @api + * @static + */ + public static function getScheme(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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. + * + * If your reverse proxy uses a different header name than "X-Forwarded-Port", + * configure it via "setTrustedHeaderName()" with the "client-port" key. + * + * @return string + * @api + * @static + */ + public static function getPort(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getPort(); + } + + /** + * Returns the user. + * + * @return string|null + * @static + */ + public static function getUser(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getUser(); + } + + /** + * Returns the password. + * + * @return string|null + * @static + */ + public static function getPassword(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getUserInfo(); + } + + /** + * Returns the HTTP host being requested. + * + * The port name will be appended to the host if it's non-standard. + * + * @return string + * @api + * @static + */ + public static function getHttpHost(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getHttpHost(); + } + + /** + * Returns the requested URI (path and query string). + * + * @return string The raw URI (i.e. not URI decoded) + * @api + * @static + */ + public static function getRequestUri(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getSchemeAndHttpHost(); + } + + /** + * Generates a normalized URI (URL) for the Request. + * + * @return string A normalized URI (URL) for the Request + * @see getQueryString() + * @api + * @static + */ + public static function getUri(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function getUriForPath($path){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function getQueryString(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getQueryString(); + } + + /** + * Checks whether the request is secure or not. + * + * This method can read the client port 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". + * + * If your reverse proxy uses a different header name than "X-Forwarded-Proto" + * ("SSL_HTTPS" for instance), configure it via "setTrustedHeaderName()" with + * the "client-proto" key. + * + * @return bool + * @api + * @static + */ + public static function isSecure(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isSecure(); + } + + /** + * Returns the host name. + * + * This method can read the client port from the "X-Forwarded-Host" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Host" header must contain the client host name. + * + * If your reverse proxy uses a different header name than "X-Forwarded-Host", + * configure it via "setTrustedHeaderName()" with the "client-host" key. + * + * @return string + * @throws \UnexpectedValueException when the host name is invalid + * @api + * @static + */ + public static function getHost(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getHost(); + } + + /** + * Sets the request method. + * + * @param string $method + * @api + * @static + */ + public static function setMethod($method){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @see getRealMethod() + * @static + */ + public static function getMethod(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getRealMethod(); + } + + /** + * Gets the mime type associated with the format. + * + * @param string $format The format + * @return string The associated mime type (null if not found) + * @api + * @static + */ + public static function getMimeType($format){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getMimeType($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) + * @api + * @static + */ + public static function getFormat($mimeType){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function setFormat($format, $mimeTypes){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setFormat($format, $mimeTypes); + } + + /** + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * _format request parameter + * * $default + * + * @param string $default The default format + * @return string The request format + * @api + * @static + */ + public static function getRequestFormat($default = 'html'){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getRequestFormat($default); + } + + /** + * Sets the request format. + * + * @param string $format The request format. + * @api + * @static + */ + public static function setRequestFormat($format){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setRequestFormat($format); + } + + /** + * Gets the format associated with the request. + * + * @return string|null The format (null if no content type is present) + * @api + * @static + */ + public static function getContentType(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getContentType(); + } + + /** + * Sets the default locale. + * + * @param string $locale + * @api + * @static + */ + public static function setDefaultLocale($locale){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setDefaultLocale($locale); + } + + /** + * Get the default locale. + * + * @return string + * @static + */ + public static function getDefaultLocale(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getDefaultLocale(); + } + + /** + * Sets the locale. + * + * @param string $locale + * @api + * @static + */ + public static function setLocale($locale){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setLocale($locale); + } + + /** + * Get the locale. + * + * @return string + * @static + */ + public static function getLocale(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::isMethod($method); + } + + /** + * Checks whether the method is safe or not. + * + * @return bool + * @api + * @static + */ + public static function isMethodSafe(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isMethodSafe(); + } + + /** + * 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 + return \Illuminate\Http\Request::getContent($asResource); + } + + /** + * Gets the Etags. + * + * @return array The entity tags + * @static + */ + public static function getETags(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getETags(); + } + + /** + * + * + * @return bool + * @static + */ + public static function isNoCache(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isNoCache(); + } + + /** + * Returns the preferred language. + * + * @param array $locales An array of ordered available locales + * @return string|null The preferred locale + * @api + * @static + */ + public static function getPreferredLanguage($locales = null){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getPreferredLanguage($locales); + } + + /** + * Gets a list of languages acceptable by the client browser. + * + * @return array Languages ordered in the user browser preferences + * @api + * @static + */ + public static function getLanguages(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getLanguages(); + } + + /** + * Gets a list of charsets acceptable by the client browser. + * + * @return array List of charsets in preferable order + * @api + * @static + */ + public static function getCharsets(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getEncodings(); + } + + /** + * Gets a list of content types acceptable by the client browser. + * + * @return array List of content types in preferable order + * @api + * @static + */ + public static function getAcceptableContentTypes(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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: + * + * @link http://en.wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript + * @return bool true if the request is an XMLHttpRequest, false otherwise + * @api + * @static + */ + public static function isXmlHttpRequest(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isXmlHttpRequest(); + } + + } + + + class Inspiring extends \Illuminate\Foundation\Inspiring{ + + } + + + class Lang extends \Illuminate\Support\Facades\Lang{ + + /** + * Determine if a translation exists. + * + * @param string $key + * @param string $locale + * @return bool + * @static + */ + public static function has($key, $locale = null){ + return \Illuminate\Translation\Translator::has($key, $locale); + } + + /** + * Get the translation for the given key. + * + * @param string $key + * @param array $replace + * @param string $locale + * @return string + * @static + */ + public static function get($key, $replace = array(), $locale = null){ + return \Illuminate\Translation\Translator::get($key, $replace, $locale); + } + + /** + * Get a translation according to an integer value. + * + * @param string $key + * @param int $number + * @param array $replace + * @param string $locale + * @return string + * @static + */ + public static function choice($key, $number, $replace = array(), $locale = null){ + return \Illuminate\Translation\Translator::choice($key, $number, $replace, $locale); + } + + /** + * Get the translation for a given key. + * + * @param string $id + * @param array $parameters + * @param string $domain + * @param string $locale + * @return string + * @static + */ + public static function trans($id, $parameters = array(), $domain = 'messages', $locale = null){ + return \Illuminate\Translation\Translator::trans($id, $parameters, $domain, $locale); + } + + /** + * Get a translation according to an integer value. + * + * @param string $id + * @param int $number + * @param array $parameters + * @param string $domain + * @param string $locale + * @return string + * @static + */ + public static function transChoice($id, $number, $parameters = array(), $domain = 'messages', $locale = null){ + return \Illuminate\Translation\Translator::transChoice($id, $number, $parameters, $domain, $locale); + } + + /** + * Load the specified language group. + * + * @param string $namespace + * @param string $group + * @param string $locale + * @return void + * @static + */ + public static function load($namespace, $group, $locale){ + \Illuminate\Translation\Translator::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){ + \Illuminate\Translation\Translator::addNamespace($namespace, $hint); + } + + /** + * Parse a key into namespace, group, and item. + * + * @param string $key + * @return array + * @static + */ + public static function parseKey($key){ + return \Illuminate\Translation\Translator::parseKey($key); + } + + /** + * Get the message selector instance. + * + * @return \Symfony\Component\Translation\MessageSelector + * @static + */ + public static function getSelector(){ + return \Illuminate\Translation\Translator::getSelector(); + } + + /** + * Set the message selector instance. + * + * @param \Symfony\Component\Translation\MessageSelector $selector + * @return void + * @static + */ + public static function setSelector($selector){ + \Illuminate\Translation\Translator::setSelector($selector); + } + + /** + * Get the language line loader implementation. + * + * @return \Illuminate\Translation\LoaderInterface + * @static + */ + public static function getLoader(){ + return \Illuminate\Translation\Translator::getLoader(); + } + + /** + * Get the default locale being used. + * + * @return string + * @static + */ + public static function locale(){ + return \Illuminate\Translation\Translator::locale(); + } + + /** + * Get the default locale being used. + * + * @return string + * @static + */ + public static function getLocale(){ + return \Illuminate\Translation\Translator::getLocale(); + } + + /** + * Set the default locale. + * + * @param string $locale + * @return void + * @static + */ + public static function setLocale($locale){ + \Illuminate\Translation\Translator::setLocale($locale); + } + + /** + * Get the fallback locale being used. + * + * @return string + * @static + */ + public static function getFallback(){ + return \Illuminate\Translation\Translator::getFallback(); + } + + /** + * Set the fallback locale being used. + * + * @param string $fallback + * @return void + * @static + */ + public static function setFallback($fallback){ + \Illuminate\Translation\Translator::setFallback($fallback); + } + + /** + * 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 + \Illuminate\Translation\Translator::setParsedKey($key, $parsed); + } + + } + + + class Log extends \Illuminate\Support\Facades\Log{ + + /** + * Adds a log record at the DEBUG level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function debug($message, $context = array()){ + return \Monolog\Logger::debug($message, $context); + } + + /** + * Adds a log record at the INFO level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function info($message, $context = array()){ + return \Monolog\Logger::info($message, $context); + } + + /** + * Adds a log record at the NOTICE level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function notice($message, $context = array()){ + return \Monolog\Logger::notice($message, $context); + } + + /** + * Adds a log record at the WARNING level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function warning($message, $context = array()){ + return \Monolog\Logger::warning($message, $context); + } + + /** + * Adds a log record at the ERROR level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function error($message, $context = array()){ + return \Monolog\Logger::error($message, $context); + } + + /** + * Adds a log record at the CRITICAL level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function critical($message, $context = array()){ + return \Monolog\Logger::critical($message, $context); + } + + /** + * Adds a log record at the ALERT level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function alert($message, $context = array()){ + return \Monolog\Logger::alert($message, $context); + } + + /** + * Adds a log record at the EMERGENCY level. + * + * @param string $message The log message + * @param array $context The log context + * @return Boolean Whether the record has been processed + * @static + */ + public static function emergency($message, $context = array()){ + return \Monolog\Logger::emergency($message, $context); + } + + /** + * Log a message to the logs. + * + * @param string $level + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function log($level, $message, $context = array()){ + \Illuminate\Log\Writer::log($level, $message, $context); + } + + /** + * Dynamically pass log calls into the writer. + * + * @param string $level + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function write($level, $message, $context = array()){ + \Illuminate\Log\Writer::write($level, $message, $context); + } + + /** + * Register a file log handler. + * + * @param string $path + * @param string $level + * @return void + * @static + */ + public static function useFiles($path, $level = 'debug'){ + \Illuminate\Log\Writer::useFiles($path, $level); + } + + /** + * Register a daily file log handler. + * + * @param string $path + * @param int $days + * @param string $level + * @return void + * @static + */ + public static function useDailyFiles($path, $days = 0, $level = 'debug'){ + \Illuminate\Log\Writer::useDailyFiles($path, $days, $level); + } + + /** + * Register a Syslog handler. + * + * @param string $name + * @param string $level + * @return void + * @static + */ + public static function useSyslog($name = 'laravel', $level = 'debug'){ + \Illuminate\Log\Writer::useSyslog($name, $level); + } + + /** + * Register an error_log handler. + * + * @param string $level + * @param int $messageType + * @return void + * @static + */ + public static function useErrorLog($level = 'debug', $messageType = 0){ + \Illuminate\Log\Writer::useErrorLog($level, $messageType); + } + + /** + * Register a new callback handler for when a log event is triggered. + * + * @param \Closure $callback + * @return void + * @throws \RuntimeException + * @static + */ + public static function listen($callback){ + \Illuminate\Log\Writer::listen($callback); + } + + /** + * Get the underlying Monolog instance. + * + * @return \Monolog\Logger + * @static + */ + public static function getMonolog(){ + return \Illuminate\Log\Writer::getMonolog(); + } + + /** + * Get the event dispatcher instance. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getEventDispatcher(){ + return \Illuminate\Log\Writer::getEventDispatcher(); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $dispatcher + * @return void + * @static + */ + public static function setEventDispatcher($dispatcher){ + \Illuminate\Log\Writer::setEventDispatcher($dispatcher); + } + + } + + + class Mail extends \Illuminate\Support\Facades\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){ + \Illuminate\Mail\Mailer::alwaysFrom($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){ + \Illuminate\Mail\Mailer::alwaysTo($address, $name); + } + + /** + * Send a new message when only a raw text part. + * + * @param string $text + * @param mixed $callback + * @return int + * @static + */ + public static function raw($text, $callback){ + return \Illuminate\Mail\Mailer::raw($text, $callback); + } + + /** + * Send a new message when only a plain part. + * + * @param string $view + * @param array $data + * @param mixed $callback + * @return int + * @static + */ + public static function plain($view, $data, $callback){ + return \Illuminate\Mail\Mailer::plain($view, $data, $callback); + } + + /** + * Send a new message using a view. + * + * @param string|array $view + * @param array $data + * @param \Closure|string $callback + * @return mixed + * @static + */ + public static function send($view, $data, $callback){ + return \Illuminate\Mail\Mailer::send($view, $data, $callback); + } + + /** + * Queue a new e-mail message for sending. + * + * @param string|array $view + * @param array $data + * @param \Closure|string $callback + * @param string|null $queue + * @return mixed + * @static + */ + public static function queue($view, $data, $callback, $queue = null){ + return \Illuminate\Mail\Mailer::queue($view, $data, $callback, $queue); + } + + /** + * Queue a new e-mail message for sending on the given queue. + * + * @param string $queue + * @param string|array $view + * @param array $data + * @param \Closure|string $callback + * @return mixed + * @static + */ + public static function onQueue($queue, $view, $data, $callback){ + return \Illuminate\Mail\Mailer::onQueue($queue, $view, $data, $callback); + } + + /** + * 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 string|array $view + * @param array $data + * @param \Closure|string $callback + * @return mixed + * @static + */ + public static function queueOn($queue, $view, $data, $callback){ + return \Illuminate\Mail\Mailer::queueOn($queue, $view, $data, $callback); + } + + /** + * Queue a new e-mail message for sending after (n) seconds. + * + * @param int $delay + * @param string|array $view + * @param array $data + * @param \Closure|string $callback + * @param string|null $queue + * @return mixed + * @static + */ + public static function later($delay, $view, $data, $callback, $queue = null){ + return \Illuminate\Mail\Mailer::later($delay, $view, $data, $callback, $queue); + } + + /** + * Queue a new e-mail message for sending after (n) seconds on the given queue. + * + * @param string $queue + * @param int $delay + * @param string|array $view + * @param array $data + * @param \Closure|string $callback + * @return mixed + * @static + */ + public static function laterOn($queue, $delay, $view, $data, $callback){ + return \Illuminate\Mail\Mailer::laterOn($queue, $delay, $view, $data, $callback); + } + + /** + * Handle a queued e-mail message job. + * + * @param \Illuminate\Contracts\Queue\Job $job + * @param array $data + * @return void + * @static + */ + public static function handleQueuedMessage($job, $data){ + \Illuminate\Mail\Mailer::handleQueuedMessage($job, $data); + } + + /** + * Tell the mailer to not really send messages. + * + * @param bool $value + * @return void + * @static + */ + public static function pretend($value = true){ + \Illuminate\Mail\Mailer::pretend($value); + } + + /** + * Check if the mailer is pretending to send messages. + * + * @return bool + * @static + */ + public static function isPretending(){ + return \Illuminate\Mail\Mailer::isPretending(); + } + + /** + * Get the view factory instance. + * + * @return \Illuminate\Contracts\View\Factory + * @static + */ + public static function getViewFactory(){ + return \Illuminate\Mail\Mailer::getViewFactory(); + } + + /** + * Get the Swift Mailer instance. + * + * @return \Swift_Mailer + * @static + */ + public static function getSwiftMailer(){ + return \Illuminate\Mail\Mailer::getSwiftMailer(); + } + + /** + * Get the array of failed recipients. + * + * @return array + * @static + */ + public static function failures(){ + return \Illuminate\Mail\Mailer::failures(); + } + + /** + * Set the Swift Mailer instance. + * + * @param \Swift_Mailer $swift + * @return void + * @static + */ + public static function setSwiftMailer($swift){ + \Illuminate\Mail\Mailer::setSwiftMailer($swift); + } + + /** + * Set the log writer instance. + * + * @param \Psr\Log\LoggerInterface $logger + * @return $this + * @static + */ + public static function setLogger($logger){ + return \Illuminate\Mail\Mailer::setLogger($logger); + } + + /** + * Set the queue manager instance. + * + * @param \Illuminate\Contracts\Queue\Queue $queue + * @return $this + * @static + */ + public static function setQueue($queue){ + return \Illuminate\Mail\Mailer::setQueue($queue); + } + + /** + * Set the IoC container instance. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return void + * @static + */ + public static function setContainer($container){ + \Illuminate\Mail\Mailer::setContainer($container); + } + + } + + + class Password extends \Illuminate\Support\Facades\Password{ + + /** + * Send a password reset link to a user. + * + * @param array $credentials + * @param \Closure|null $callback + * @return string + * @static + */ + public static function sendResetLink($credentials, $callback = null){ + return \Illuminate\Auth\Passwords\PasswordBroker::sendResetLink($credentials, $callback); + } + + /** + * Send the password reset link via e-mail. + * + * @param \Illuminate\Contracts\Auth\CanResetPassword $user + * @param string $token + * @param \Closure|null $callback + * @return int + * @static + */ + public static function emailResetLink($user, $token, $callback = null){ + return \Illuminate\Auth\Passwords\PasswordBroker::emailResetLink($user, $token, $callback); + } + + /** + * Reset the password for the given token. + * + * @param array $credentials + * @param \Closure $callback + * @return mixed + * @static + */ + public static function reset($credentials, $callback){ + return \Illuminate\Auth\Passwords\PasswordBroker::reset($credentials, $callback); + } + + /** + * Set a custom password validator. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function validator($callback){ + \Illuminate\Auth\Passwords\PasswordBroker::validator($callback); + } + + /** + * Determine if the passwords match for the request. + * + * @param array $credentials + * @return bool + * @static + */ + public static function validateNewPassword($credentials){ + return \Illuminate\Auth\Passwords\PasswordBroker::validateNewPassword($credentials); + } + + /** + * Get the user for the given credentials. + * + * @param array $credentials + * @return \Illuminate\Contracts\Auth\CanResetPassword + * @throws \UnexpectedValueException + * @static + */ + public static function getUser($credentials){ + return \Illuminate\Auth\Passwords\PasswordBroker::getUser($credentials); + } + + } + + + class Queue extends \Illuminate\Support\Facades\Queue{ + + /** + * Register an event listener for the after job event. + * + * @param mixed $callback + * @return void + * @static + */ + public static function after($callback){ + \Illuminate\Queue\QueueManager::after($callback); + } + + /** + * Register an event listener for the daemon queue loop. + * + * @param mixed $callback + * @return void + * @static + */ + public static function looping($callback){ + \Illuminate\Queue\QueueManager::looping($callback); + } + + /** + * Register an event listener for the failed job event. + * + * @param mixed $callback + * @return void + * @static + */ + public static function failing($callback){ + \Illuminate\Queue\QueueManager::failing($callback); + } + + /** + * Register an event listener for the daemon queue stopping. + * + * @param mixed $callback + * @return void + * @static + */ + public static function stopping($callback){ + \Illuminate\Queue\QueueManager::stopping($callback); + } + + /** + * Determine if the driver is connected. + * + * @param string $name + * @return bool + * @static + */ + public static function connected($name = null){ + return \Illuminate\Queue\QueueManager::connected($name); + } + + /** + * Resolve a queue connection instance. + * + * @param string $name + * @return \Illuminate\Contracts\Queue\Queue + * @static + */ + public static function connection($name = null){ + return \Illuminate\Queue\QueueManager::connection($name); + } + + /** + * Add a queue connection resolver. + * + * @param string $driver + * @param \Closure $resolver + * @return void + * @static + */ + public static function extend($driver, $resolver){ + \Illuminate\Queue\QueueManager::extend($driver, $resolver); + } + + /** + * Add a queue connection resolver. + * + * @param string $driver + * @param \Closure $resolver + * @return void + * @static + */ + public static function addConnector($driver, $resolver){ + \Illuminate\Queue\QueueManager::addConnector($driver, $resolver); + } + + /** + * Get the name of the default queue connection. + * + * @return string + * @static + */ + public static function getDefaultDriver(){ + return \Illuminate\Queue\QueueManager::getDefaultDriver(); + } + + /** + * Set the name of the default queue connection. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name){ + \Illuminate\Queue\QueueManager::setDefaultDriver($name); + } + + /** + * Get the full name for the given connection. + * + * @param string $connection + * @return string + * @static + */ + public static function getName($connection = null){ + return \Illuminate\Queue\QueueManager::getName($connection); + } + + /** + * Determine if the application is in maintenance mode. + * + * @return bool + * @static + */ + public static function isDownForMaintenance(){ + return \Illuminate\Queue\QueueManager::isDownForMaintenance(); + } + + /** + * Push a new job onto the queue. + * + * @param string $job + * @param mixed $data + * @param string $queue + * @return mixed + * @throws \Throwable + * @static + */ + public static function push($job, $data = '', $queue = null){ + return \Illuminate\Queue\SyncQueue::push($job, $data, $queue); + } + + /** + * Push a raw payload onto the queue. + * + * @param string $payload + * @param string $queue + * @param array $options + * @return mixed + * @static + */ + public static function pushRaw($payload, $queue = null, $options = array()){ + return \Illuminate\Queue\SyncQueue::pushRaw($payload, $queue, $options); + } + + /** + * Push a new job onto the queue after a delay. + * + * @param \DateTime|int $delay + * @param string $job + * @param mixed $data + * @param string $queue + * @return mixed + * @static + */ + public static function later($delay, $job, $data = '', $queue = null){ + return \Illuminate\Queue\SyncQueue::later($delay, $job, $data, $queue); + } + + /** + * Pop the next job off of the queue. + * + * @param string $queue + * @return \Illuminate\Contracts\Queue\Job|null + * @static + */ + public static function pop($queue = null){ + return \Illuminate\Queue\SyncQueue::pop($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 = ''){ + //Method inherited from \Illuminate\Queue\Queue + return \Illuminate\Queue\SyncQueue::pushOn($queue, $job, $data); + } + + /** + * Push a new job onto the queue after a delay. + * + * @param string $queue + * @param \DateTime|int $delay + * @param string $job + * @param mixed $data + * @return mixed + * @static + */ + public static function laterOn($queue, $delay, $job, $data = ''){ + //Method inherited from \Illuminate\Queue\Queue + return \Illuminate\Queue\SyncQueue::laterOn($queue, $delay, $job, $data); + } + + /** + * Marshal a push queue request and fire the job. + * + * @throws \RuntimeException + * @deprecated since version 5.1. + * @static + */ + public static function marshal(){ + //Method inherited from \Illuminate\Queue\Queue + return \Illuminate\Queue\SyncQueue::marshal(); + } + + /** + * Push an array of jobs onto the queue. + * + * @param array $jobs + * @param mixed $data + * @param string $queue + * @return mixed + * @static + */ + public static function bulk($jobs, $data = '', $queue = null){ + //Method inherited from \Illuminate\Queue\Queue + return \Illuminate\Queue\SyncQueue::bulk($jobs, $data, $queue); + } + + /** + * Set the IoC container instance. + * + * @param \Illuminate\Container\Container $container + * @return void + * @static + */ + public static function setContainer($container){ + //Method inherited from \Illuminate\Queue\Queue + \Illuminate\Queue\SyncQueue::setContainer($container); + } + + /** + * Set the encrypter instance. + * + * @param \Illuminate\Contracts\Encryption\Encrypter $crypt + * @return void + * @static + */ + public static function setEncrypter($crypt){ + //Method inherited from \Illuminate\Queue\Queue + \Illuminate\Queue\SyncQueue::setEncrypter($crypt); + } + + } + + + class Redirect extends \Illuminate\Support\Facades\Redirect{ + + /** + * Create a new redirect response to the "home" route. + * + * @param int $status + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function home($status = 302){ + return \Illuminate\Routing\Redirector::home($status); + } + + /** + * Create a new redirect response to the previous location. + * + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function back($status = 302, $headers = array()){ + return \Illuminate\Routing\Redirector::back($status, $headers); + } + + /** + * 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 = array()){ + return \Illuminate\Routing\Redirector::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 $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function guest($path, $status = 302, $headers = array(), $secure = null){ + return \Illuminate\Routing\Redirector::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 $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function intended($default = '/', $status = 302, $headers = array(), $secure = null){ + return \Illuminate\Routing\Redirector::intended($default, $status, $headers, $secure); + } + + /** + * Create a new redirect response to the given path. + * + * @param string $path + * @param int $status + * @param array $headers + * @param bool $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function to($path, $status = 302, $headers = array(), $secure = null){ + return \Illuminate\Routing\Redirector::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 = array()){ + return \Illuminate\Routing\Redirector::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 = array()){ + return \Illuminate\Routing\Redirector::secure($path, $status, $headers); + } + + /** + * 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 route($route, $parameters = array(), $status = 302, $headers = array()){ + return \Illuminate\Routing\Redirector::route($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 action($action, $parameters = array(), $status = 302, $headers = array()){ + return \Illuminate\Routing\Redirector::action($action, $parameters, $status, $headers); + } + + /** + * Get the URL generator instance. + * + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function getUrlGenerator(){ + return \Illuminate\Routing\Redirector::getUrlGenerator(); + } + + /** + * Set the active session store. + * + * @param \Illuminate\Session\Store $session + * @return void + * @static + */ + public static function setSession($session){ + \Illuminate\Routing\Redirector::setSession($session); + } + + } + + + class Request extends \Illuminate\Support\Facades\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 $this + * @static + */ + public static function instance(){ + return \Illuminate\Http\Request::instance(); + } + + /** + * Get the request method. + * + * @return string + * @static + */ + public static function method(){ + return \Illuminate\Http\Request::method(); + } + + /** + * Get the root URL for the application. + * + * @return string + * @static + */ + public static function root(){ + return \Illuminate\Http\Request::root(); + } + + /** + * Get the URL (no query string) for the request. + * + * @return string + * @static + */ + public static function url(){ + return \Illuminate\Http\Request::url(); + } + + /** + * Get the full URL for the request. + * + * @return string + * @static + */ + public static function fullUrl(){ + return \Illuminate\Http\Request::fullUrl(); + } + + /** + * Get the current path info for the request. + * + * @return string + * @static + */ + public static function path(){ + return \Illuminate\Http\Request::path(); + } + + /** + * Get the current encoded path info for the request. + * + * @return string + * @static + */ + public static function decodedPath(){ + return \Illuminate\Http\Request::decodedPath(); + } + + /** + * Get a segment from the URI (1 based index). + * + * @param int $index + * @param mixed $default + * @return string + * @static + */ + public static function segment($index, $default = null){ + return \Illuminate\Http\Request::segment($index, $default); + } + + /** + * Get all of the segments for the request path. + * + * @return array + * @static + */ + public static function segments(){ + return \Illuminate\Http\Request::segments(); + } + + /** + * Determine if the current request URI matches a pattern. + * + * @param mixed string + * @return bool + * @static + */ + public static function is(){ + return \Illuminate\Http\Request::is(); + } + + /** + * Determine if the request is the result of an AJAX call. + * + * @return bool + * @static + */ + public static function ajax(){ + return \Illuminate\Http\Request::ajax(); + } + + /** + * Determine if the request is the result of an PJAX call. + * + * @return bool + * @static + */ + public static function pjax(){ + return \Illuminate\Http\Request::pjax(); + } + + /** + * Determine if the request is over HTTPS. + * + * @return bool + * @static + */ + public static function secure(){ + return \Illuminate\Http\Request::secure(); + } + + /** + * Returns the client IP address. + * + * @return string + * @static + */ + public static function ip(){ + return \Illuminate\Http\Request::ip(); + } + + /** + * Returns the client IP addresses. + * + * @return array + * @static + */ + public static function ips(){ + return \Illuminate\Http\Request::ips(); + } + + /** + * Determine if the request contains a given input item key. + * + * @param string|array $key + * @return bool + * @static + */ + public static function exists($key){ + return \Illuminate\Http\Request::exists($key); + } + + /** + * Determine if the request contains a non-empty value for an input item. + * + * @param string|array $key + * @return bool + * @static + */ + public static function has($key){ + return \Illuminate\Http\Request::has($key); + } + + /** + * Get all of the input and files for the request. + * + * @return array + * @static + */ + public static function all(){ + return \Illuminate\Http\Request::all(); + } + + /** + * Retrieve an input item from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function input($key = null, $default = null){ + return \Illuminate\Http\Request::input($key, $default); + } + + /** + * Get a subset of the items from the input data. + * + * @param array $keys + * @return array + * @static + */ + public static function only($keys){ + return \Illuminate\Http\Request::only($keys); + } + + /** + * Get all of the input except for a specified array of items. + * + * @param array $keys + * @return array + * @static + */ + public static function except($keys){ + return \Illuminate\Http\Request::except($keys); + } + + /** + * Retrieve a query string item from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function query($key = null, $default = null){ + return \Illuminate\Http\Request::query($key, $default); + } + + /** + * Determine if a cookie is set on the request. + * + * @param string $key + * @return bool + * @static + */ + public static function hasCookie($key){ + return \Illuminate\Http\Request::hasCookie($key); + } + + /** + * Retrieve a cookie from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function cookie($key = null, $default = null){ + return \Illuminate\Http\Request::cookie($key, $default); + } + + /** + * Retrieve a file from the request. + * + * @param string $key + * @param mixed $default + * @return \Symfony\Component\HttpFoundation\File\UploadedFile|array + * @static + */ + public static function file($key = null, $default = null){ + return \Illuminate\Http\Request::file($key, $default); + } + + /** + * Determine if the uploaded data contains a file. + * + * @param string $key + * @return bool + * @static + */ + public static function hasFile($key){ + return \Illuminate\Http\Request::hasFile($key); + } + + /** + * Retrieve a header from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function header($key = null, $default = null){ + return \Illuminate\Http\Request::header($key, $default); + } + + /** + * Retrieve a server variable from the request. + * + * @param string $key + * @param mixed $default + * @return string|array + * @static + */ + public static function server($key = null, $default = null){ + return \Illuminate\Http\Request::server($key, $default); + } + + /** + * Retrieve an old input item. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function old($key = null, $default = null){ + return \Illuminate\Http\Request::old($key, $default); + } + + /** + * Flash the input for the current request to the session. + * + * @param string $filter + * @param array $keys + * @return void + * @static + */ + public static function flash($filter = null, $keys = array()){ + \Illuminate\Http\Request::flash($filter, $keys); + } + + /** + * Flash only some of the input to the session. + * + * @param mixed string + * @return void + * @static + */ + public static function flashOnly($keys){ + \Illuminate\Http\Request::flashOnly($keys); + } + + /** + * Flash only some of the input to the session. + * + * @param mixed string + * @return void + * @static + */ + public static function flashExcept($keys){ + \Illuminate\Http\Request::flashExcept($keys); + } + + /** + * Flush all of the old input from the session. + * + * @return void + * @static + */ + public static function flush(){ + \Illuminate\Http\Request::flush(); + } + + /** + * Merge new input into the current request's input array. + * + * @param array $input + * @return void + * @static + */ + public static function merge($input){ + \Illuminate\Http\Request::merge($input); + } + + /** + * Replace the input for the current request. + * + * @param array $input + * @return void + * @static + */ + public static function replace($input){ + \Illuminate\Http\Request::replace($input); + } + + /** + * Get the JSON payload for the request. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function json($key = null, $default = null){ + return \Illuminate\Http\Request::json($key, $default); + } + + /** + * Determine if the given content types match. + * + * @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(){ + return \Illuminate\Http\Request::isJson(); + } + + /** + * Determine if the current request is asking for JSON in return. + * + * @return bool + * @static + */ + public static function wantsJson(){ + return \Illuminate\Http\Request::wantsJson(); + } + + /** + * Determines whether the current requests accepts a given content type. + * + * @param string|array $contentTypes + * @return bool + * @static + */ + public static function accepts($contentTypes){ + return \Illuminate\Http\Request::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){ + return \Illuminate\Http\Request::prefers($contentTypes); + } + + /** + * Determines whether a request accepts JSON. + * + * @return bool + * @static + */ + public static function acceptsJson(){ + return \Illuminate\Http\Request::acceptsJson(); + } + + /** + * Determines whether a request accepts HTML. + * + * @return bool + * @static + */ + public static function acceptsHtml(){ + return \Illuminate\Http\Request::acceptsHtml(); + } + + /** + * Get the data format expected in the response. + * + * @param string $default + * @return string + * @static + */ + public static function format($default = 'html'){ + return \Illuminate\Http\Request::format($default); + } + + /** + * Create an Illuminate request from a Symfony instance. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return \Illuminate\Http\Request + * @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 \Symfony\Component\HttpFoundation\Request The duplicated request + * @api + * @static + */ + public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null){ + return \Illuminate\Http\Request::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(){ + return \Illuminate\Http\Request::session(); + } + + /** + * Get the user making the request. + * + * @return mixed + * @static + */ + public static function user(){ + return \Illuminate\Http\Request::user(); + } + + /** + * Get the route handling the request. + * + * @param string|null $param + * @return object|string + * @static + */ + public static function route($param = null){ + return \Illuminate\Http\Request::route($param); + } + + /** + * Get the user resolver callback. + * + * @return \Closure + * @static + */ + public static function getUserResolver(){ + return \Illuminate\Http\Request::getUserResolver(); + } + + /** + * Set the user resolver callback. + * + * @param \Closure $callback + * @return $this + * @static + */ + public static function setUserResolver($callback){ + return \Illuminate\Http\Request::setUserResolver($callback); + } + + /** + * Get the route resolver callback. + * + * @return \Closure + * @static + */ + public static function getRouteResolver(){ + return \Illuminate\Http\Request::getRouteResolver(); + } + + /** + * Set the route resolver callback. + * + * @param \Closure $callback + * @return $this + * @static + */ + public static function setRouteResolver($callback){ + return \Illuminate\Http\Request::setRouteResolver($callback); + } + + /** + * Determine if the given offset exists. + * + * @param string $offset + * @return bool + * @static + */ + public static function offsetExists($offset){ + return \Illuminate\Http\Request::offsetExists($offset); + } + + /** + * Get the value at the given offset. + * + * @param string $offset + * @return mixed + * @static + */ + public static function offsetGet($offset){ + return \Illuminate\Http\Request::offsetGet($offset); + } + + /** + * Set the value at the given offset. + * + * @param string $offset + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($offset, $value){ + \Illuminate\Http\Request::offsetSet($offset, $value); + } + + /** + * Remove the value at the given offset. + * + * @param string $offset + * @return void + * @static + */ + public static function offsetUnset($offset){ + \Illuminate\Http\Request::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 $content The raw body data + * @api + * @static + */ + public static function initialize($query = array(), $request = array(), $attributes = array(), $cookies = array(), $files = array(), $server = array(), $content = null){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::initialize($query, $request, $attributes, $cookies, $files, $server, $content); + } + + /** + * Creates a new request with values from PHP's super globals. + * + * @return \Symfony\Component\HttpFoundation\Request A new request + * @api + * @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 $content The raw body data + * @return \Symfony\Component\HttpFoundation\Request A Request instance + * @api + * @static + */ + public static function create($uri, $method = 'GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $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 + * + * @api + * @static + */ + public static function overrideGlobals(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function setTrustedProxies($proxies){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedProxies($proxies); + } + + /** + * 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(); + } + + /** + * 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(); + } + + /** + * Sets the name for trusted headers. + * + * The following header keys are supported: + * + * * Request::HEADER_CLIENT_IP: defaults to X-Forwarded-For (see getClientIp()) + * * Request::HEADER_CLIENT_HOST: defaults to X-Forwarded-Host (see getHost()) + * * Request::HEADER_CLIENT_PORT: defaults to X-Forwarded-Port (see getPort()) + * * Request::HEADER_CLIENT_PROTO: defaults to X-Forwarded-Proto (see getScheme() and isSecure()) + * + * Setting an empty value allows to disable the trusted header for the given key. + * + * @param string $key The header key + * @param string $value The header name + * @throws \InvalidArgumentException + * @static + */ + public static function setTrustedHeaderName($key, $value){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedHeaderName($key, $value); + } + + /** + * Gets the trusted proxy header name. + * + * @param string $key The header key + * @return string The header name + * @throws \InvalidArgumentException + * @static + */ + public static function getTrustedHeaderName($key){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedHeaderName($key); + } + + /** + * 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(); + } + + /** + * Gets a "parameter" value. + * + * This method is mainly useful for libraries that want to provide some flexibility. + * + * Order of precedence: GET, PATH, POST + * + * Avoid using this method in controllers: + * + * * slow + * * prefer to get from a "named" source + * + * It is better to explicitly get request parameters from the appropriate + * public property instead (query, attributes, request). + * + * @param string $key the key + * @param mixed $default the default value + * @param bool $deep is parameter deep in multidimensional array + * @return mixed + * @static + */ + public static function get($key, $default = null, $deep = false){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::get($key, $default, $deep); + } + + /** + * Gets the Session. + * + * @return \Symfony\Component\HttpFoundation\SessionInterface|null The session + * @api + * @static + */ + public static function getSession(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getSession(); + } + + /** + * Whether the request contains a Session which was started in one of the + * previous requests. + * + * @return bool + * @api + * @static + */ + public static function hasPreviousSession(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function hasSession(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::hasSession(); + } + + /** + * Sets the Session. + * + * @param \Symfony\Component\HttpFoundation\SessionInterface $session The Session + * @api + * @static + */ + public static function setSession($session){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setSession($session); + } + + /** + * 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 + return \Illuminate\Http\Request::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 "setTrustedHeaderName()" with + * the "client-ip" key. + * + * @return string The client IP address + * @see getClientIps() + * @see http://en.wikipedia.org/wiki/X-Forwarded-For + * @api + * @static + */ + public static function getClientIp(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getClientIp(); + } + + /** + * Returns current script name. + * + * @return string + * @api + * @static + */ + public static function getScriptName(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function getPathInfo(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function getBasePath(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function getBaseUrl(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getBaseUrl(); + } + + /** + * Gets the request's scheme. + * + * @return string + * @api + * @static + */ + public static function getScheme(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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. + * + * If your reverse proxy uses a different header name than "X-Forwarded-Port", + * configure it via "setTrustedHeaderName()" with the "client-port" key. + * + * @return string + * @api + * @static + */ + public static function getPort(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getPort(); + } + + /** + * Returns the user. + * + * @return string|null + * @static + */ + public static function getUser(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getUser(); + } + + /** + * Returns the password. + * + * @return string|null + * @static + */ + public static function getPassword(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getUserInfo(); + } + + /** + * Returns the HTTP host being requested. + * + * The port name will be appended to the host if it's non-standard. + * + * @return string + * @api + * @static + */ + public static function getHttpHost(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getHttpHost(); + } + + /** + * Returns the requested URI (path and query string). + * + * @return string The raw URI (i.e. not URI decoded) + * @api + * @static + */ + public static function getRequestUri(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getSchemeAndHttpHost(); + } + + /** + * Generates a normalized URI (URL) for the Request. + * + * @return string A normalized URI (URL) for the Request + * @see getQueryString() + * @api + * @static + */ + public static function getUri(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function getUriForPath($path){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::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 + * @api + * @static + */ + public static function getQueryString(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getQueryString(); + } + + /** + * Checks whether the request is secure or not. + * + * This method can read the client port 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". + * + * If your reverse proxy uses a different header name than "X-Forwarded-Proto" + * ("SSL_HTTPS" for instance), configure it via "setTrustedHeaderName()" with + * the "client-proto" key. + * + * @return bool + * @api + * @static + */ + public static function isSecure(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isSecure(); + } + + /** + * Returns the host name. + * + * This method can read the client port from the "X-Forwarded-Host" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Host" header must contain the client host name. + * + * If your reverse proxy uses a different header name than "X-Forwarded-Host", + * configure it via "setTrustedHeaderName()" with the "client-host" key. + * + * @return string + * @throws \UnexpectedValueException when the host name is invalid + * @api + * @static + */ + public static function getHost(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getHost(); + } + + /** + * Sets the request method. + * + * @param string $method + * @api + * @static + */ + public static function setMethod($method){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + * @api + * @see getRealMethod() + * @static + */ + public static function getMethod(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getRealMethod(); + } + + /** + * Gets the mime type associated with the format. + * + * @param string $format The format + * @return string The associated mime type (null if not found) + * @api + * @static + */ + public static function getMimeType($format){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getMimeType($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) + * @api + * @static + */ + public static function getFormat($mimeType){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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) + * @api + * @static + */ + public static function setFormat($format, $mimeTypes){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setFormat($format, $mimeTypes); + } + + /** + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * _format request parameter + * * $default + * + * @param string $default The default format + * @return string The request format + * @api + * @static + */ + public static function getRequestFormat($default = 'html'){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getRequestFormat($default); + } + + /** + * Sets the request format. + * + * @param string $format The request format. + * @api + * @static + */ + public static function setRequestFormat($format){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setRequestFormat($format); + } + + /** + * Gets the format associated with the request. + * + * @return string|null The format (null if no content type is present) + * @api + * @static + */ + public static function getContentType(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getContentType(); + } + + /** + * Sets the default locale. + * + * @param string $locale + * @api + * @static + */ + public static function setDefaultLocale($locale){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setDefaultLocale($locale); + } + + /** + * Get the default locale. + * + * @return string + * @static + */ + public static function getDefaultLocale(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getDefaultLocale(); + } + + /** + * Sets the locale. + * + * @param string $locale + * @api + * @static + */ + public static function setLocale($locale){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setLocale($locale); + } + + /** + * Get the locale. + * + * @return string + * @static + */ + public static function getLocale(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::isMethod($method); + } + + /** + * Checks whether the method is safe or not. + * + * @return bool + * @api + * @static + */ + public static function isMethodSafe(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isMethodSafe(); + } + + /** + * 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 + return \Illuminate\Http\Request::getContent($asResource); + } + + /** + * Gets the Etags. + * + * @return array The entity tags + * @static + */ + public static function getETags(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getETags(); + } + + /** + * + * + * @return bool + * @static + */ + public static function isNoCache(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isNoCache(); + } + + /** + * Returns the preferred language. + * + * @param array $locales An array of ordered available locales + * @return string|null The preferred locale + * @api + * @static + */ + public static function getPreferredLanguage($locales = null){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getPreferredLanguage($locales); + } + + /** + * Gets a list of languages acceptable by the client browser. + * + * @return array Languages ordered in the user browser preferences + * @api + * @static + */ + public static function getLanguages(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getLanguages(); + } + + /** + * Gets a list of charsets acceptable by the client browser. + * + * @return array List of charsets in preferable order + * @api + * @static + */ + public static function getCharsets(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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 + return \Illuminate\Http\Request::getEncodings(); + } + + /** + * Gets a list of content types acceptable by the client browser. + * + * @return array List of content types in preferable order + * @api + * @static + */ + public static function getAcceptableContentTypes(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::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: + * + * @link http://en.wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript + * @return bool true if the request is an XMLHttpRequest, false otherwise + * @api + * @static + */ + public static function isXmlHttpRequest(){ + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::isXmlHttpRequest(); + } + + } + + + class Response extends \Illuminate\Support\Facades\Response{ + + /** + * Return a new response from the application. + * + * @param string $content + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response + * @static + */ + public static function make($content = '', $status = 200, $headers = array()){ + return \Illuminate\Routing\ResponseFactory::make($content, $status, $headers); + } + + /** + * Return a new view response from the application. + * + * @param string $view + * @param array $data + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response + * @static + */ + public static function view($view, $data = array(), $status = 200, $headers = array()){ + return \Illuminate\Routing\ResponseFactory::view($view, $data, $status, $headers); + } + + /** + * Return a new JSON response from the application. + * + * @param string|array $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse + * @static + */ + public static function json($data = array(), $status = 200, $headers = array(), $options = 0){ + return \Illuminate\Routing\ResponseFactory::json($data, $status, $headers, $options); + } + + /** + * Return a new JSONP response from the application. + * + * @param string $callback + * @param string|array $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse + * @static + */ + public static function jsonp($callback, $data = array(), $status = 200, $headers = array(), $options = 0){ + return \Illuminate\Routing\ResponseFactory::jsonp($callback, $data, $status, $headers, $options); + } + + /** + * Return a new streamed response from the application. + * + * @param \Closure $callback + * @param int $status + * @param array $headers + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ + public static function stream($callback, $status = 200, $headers = array()){ + return \Illuminate\Routing\ResponseFactory::stream($callback, $status, $headers); + } + + /** + * Create a new file download response. + * + * @param \SplFileInfo|string $file + * @param string $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @static + */ + public static function download($file, $name = null, $headers = array(), $disposition = 'attachment'){ + return \Illuminate\Routing\ResponseFactory::download($file, $name, $headers, $disposition); + } + + /** + * 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 = array(), $secure = null){ + return \Illuminate\Routing\ResponseFactory::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 = array(), $status = 302, $headers = array()){ + return \Illuminate\Routing\ResponseFactory::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 = array(), $status = 302, $headers = array()){ + return \Illuminate\Routing\ResponseFactory::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 = array(), $secure = null){ + return \Illuminate\Routing\ResponseFactory::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 = array(), $secure = null){ + return \Illuminate\Routing\ResponseFactory::redirectToIntended($default, $status, $headers, $secure); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param callable $macro + * @return void + * @static + */ + public static function macro($name, $macro){ + \Illuminate\Routing\ResponseFactory::macro($name, $macro); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name){ + return \Illuminate\Routing\ResponseFactory::hasMacro($name); + } + + } + + + class Route extends \Illuminate\Support\Facades\Route{ + + /** + * Register a new GET route with the router. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function get($uri, $action){ + return \Illuminate\Routing\Router::get($uri, $action); + } + + /** + * Register a new POST route with the router. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function post($uri, $action){ + return \Illuminate\Routing\Router::post($uri, $action); + } + + /** + * Register a new PUT route with the router. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function put($uri, $action){ + return \Illuminate\Routing\Router::put($uri, $action); + } + + /** + * Register a new PATCH route with the router. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function patch($uri, $action){ + return \Illuminate\Routing\Router::patch($uri, $action); + } + + /** + * Register a new DELETE route with the router. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function delete($uri, $action){ + return \Illuminate\Routing\Router::delete($uri, $action); + } + + /** + * Register a new OPTIONS route with the router. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function options($uri, $action){ + return \Illuminate\Routing\Router::options($uri, $action); + } + + /** + * Register a new route responding to all verbs. + * + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function any($uri, $action){ + return \Illuminate\Routing\Router::any($uri, $action); + } + + /** + * Register a new route with the given verbs. + * + * @param array|string $methods + * @param string $uri + * @param \Closure|array|string $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function match($methods, $uri, $action){ + return \Illuminate\Routing\Router::match($methods, $uri, $action); + } + + /** + * Register an array of controllers with wildcard routing. + * + * @param array $controllers + * @return void + * @static + */ + public static function controllers($controllers){ + \Illuminate\Routing\Router::controllers($controllers); + } + + /** + * Route a controller to a URI with wildcard routing. + * + * @param string $uri + * @param string $controller + * @param array $names + * @return void + * @static + */ + public static function controller($uri, $controller, $names = array()){ + \Illuminate\Routing\Router::controller($uri, $controller, $names); + } + + /** + * Register an array of resource controllers. + * + * @param array $resources + * @return void + * @static + */ + public static function resources($resources){ + \Illuminate\Routing\Router::resources($resources); + } + + /** + * Route a resource to a controller. + * + * @param string $name + * @param string $controller + * @param array $options + * @return void + * @static + */ + public static function resource($name, $controller, $options = array()){ + \Illuminate\Routing\Router::resource($name, $controller, $options); + } + + /** + * Create a route group with shared attributes. + * + * @param array $attributes + * @param \Closure $callback + * @return void + * @static + */ + public static function group($attributes, $callback){ + \Illuminate\Routing\Router::group($attributes, $callback); + } + + /** + * Merge the given array with the last group stack. + * + * @param array $new + * @return array + * @static + */ + public static function mergeWithLastGroup($new){ + return \Illuminate\Routing\Router::mergeWithLastGroup($new); + } + + /** + * Merge the given group attributes. + * + * @param array $new + * @param array $old + * @return array + * @static + */ + public static function mergeGroup($new, $old){ + return \Illuminate\Routing\Router::mergeGroup($new, $old); + } + + /** + * Get the prefix from the last group on the stack. + * + * @return string + * @static + */ + public static function getLastGroupPrefix(){ + return \Illuminate\Routing\Router::getLastGroupPrefix(); + } + + /** + * Dispatch the request to the application. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + * @static + */ + public static function dispatch($request){ + return \Illuminate\Routing\Router::dispatch($request); + } + + /** + * Dispatch the request to a route and return the response. + * + * @param \Illuminate\Http\Request $request + * @return mixed + * @static + */ + public static function dispatchToRoute($request){ + return \Illuminate\Routing\Router::dispatchToRoute($request); + } + + /** + * Gather the middleware for the given route. + * + * @param \Illuminate\Routing\Route $route + * @return array + * @static + */ + public static function gatherRouteMiddlewares($route){ + return \Illuminate\Routing\Router::gatherRouteMiddlewares($route); + } + + /** + * Resolve the middleware name to a class name preserving passed parameters. + * + * @param $name + * @return string + * @static + */ + public static function resolveMiddlewareClassName($name){ + return \Illuminate\Routing\Router::resolveMiddlewareClassName($name); + } + + /** + * Register a route matched event listener. + * + * @param string|callable $callback + * @return void + * @static + */ + public static function matched($callback){ + \Illuminate\Routing\Router::matched($callback); + } + + /** + * Register a new "before" filter with the router. + * + * @param string|callable $callback + * @return void + * @deprecated since version 5.1. + * @static + */ + public static function before($callback){ + \Illuminate\Routing\Router::before($callback); + } + + /** + * Register a new "after" filter with the router. + * + * @param string|callable $callback + * @return void + * @deprecated since version 5.1. + * @static + */ + public static function after($callback){ + \Illuminate\Routing\Router::after($callback); + } + + /** + * Get all of the defined middleware short-hand names. + * + * @return array + * @static + */ + public static function getMiddleware(){ + return \Illuminate\Routing\Router::getMiddleware(); + } + + /** + * Register a short-hand name for a middleware. + * + * @param string $name + * @param string $class + * @return $this + * @static + */ + public static function middleware($name, $class){ + return \Illuminate\Routing\Router::middleware($name, $class); + } + + /** + * Register a new filter with the router. + * + * @param string $name + * @param string|callable $callback + * @return void + * @deprecated since version 5.1. + * @static + */ + public static function filter($name, $callback){ + \Illuminate\Routing\Router::filter($name, $callback); + } + + /** + * Register a pattern-based filter with the router. + * + * @param string $pattern + * @param string $name + * @param array|null $methods + * @return void + * @deprecated since version 5.1. + * @static + */ + public static function when($pattern, $name, $methods = null){ + \Illuminate\Routing\Router::when($pattern, $name, $methods); + } + + /** + * Register a regular expression based filter with the router. + * + * @param string $pattern + * @param string $name + * @param array|null $methods + * @return void + * @deprecated since version 5.1. + * @static + */ + public static function whenRegex($pattern, $name, $methods = null){ + \Illuminate\Routing\Router::whenRegex($pattern, $name, $methods); + } + + /** + * Register a model binder for a wildcard. + * + * @param string $key + * @param string $class + * @param \Closure|null $callback + * @return void + * @throws NotFoundHttpException + * @static + */ + public static function model($key, $class, $callback = null){ + \Illuminate\Routing\Router::model($key, $class, $callback); + } + + /** + * Add a new route parameter binder. + * + * @param string $key + * @param string|callable $binder + * @return void + * @static + */ + public static function bind($key, $binder){ + \Illuminate\Routing\Router::bind($key, $binder); + } + + /** + * Create a class based binding using the IoC container. + * + * @param string $binding + * @return \Closure + * @static + */ + public static function createClassBinding($binding){ + return \Illuminate\Routing\Router::createClassBinding($binding); + } + + /** + * Set a global where pattern on all routes. + * + * @param string $key + * @param string $pattern + * @return void + * @static + */ + public static function pattern($key, $pattern){ + \Illuminate\Routing\Router::pattern($key, $pattern); + } + + /** + * Set a group of global where patterns on all routes. + * + * @param array $patterns + * @return void + * @static + */ + public static function patterns($patterns){ + \Illuminate\Routing\Router::patterns($patterns); + } + + /** + * Call the given route's before filters. + * + * @param \Illuminate\Routing\Route $route + * @param \Illuminate\Http\Request $request + * @return mixed + * @static + */ + public static function callRouteBefore($route, $request){ + return \Illuminate\Routing\Router::callRouteBefore($route, $request); + } + + /** + * Find the patterned filters matching a request. + * + * @param \Illuminate\Http\Request $request + * @return array + * @deprecated since version 5.1. + * @static + */ + public static function findPatternFilters($request){ + return \Illuminate\Routing\Router::findPatternFilters($request); + } + + /** + * Call the given route's after filters. + * + * @param \Illuminate\Routing\Route $route + * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Response $response + * @return mixed + * @deprecated since version 5.1. + * @static + */ + public static function callRouteAfter($route, $request, $response){ + return \Illuminate\Routing\Router::callRouteAfter($route, $request, $response); + } + + /** + * Call the given route filter. + * + * @param string $filter + * @param array $parameters + * @param \Illuminate\Routing\Route $route + * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Response|null $response + * @return mixed + * @deprecated since version 5.1. + * @static + */ + public static function callRouteFilter($filter, $parameters, $route, $request, $response = null){ + return \Illuminate\Routing\Router::callRouteFilter($filter, $parameters, $route, $request, $response); + } + + /** + * Create a response instance from the given value. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Illuminate\Http\Response + * @static + */ + public static function prepareResponse($request, $response){ + return \Illuminate\Routing\Router::prepareResponse($request, $response); + } + + /** + * Determine if the router currently has a group stack. + * + * @return bool + * @static + */ + public static function hasGroupStack(){ + return \Illuminate\Routing\Router::hasGroupStack(); + } + + /** + * Get the current group stack for the router. + * + * @return array + * @static + */ + public static function getGroupStack(){ + return \Illuminate\Routing\Router::getGroupStack(); + } + + /** + * Get a route parameter for the current route. + * + * @param string $key + * @param string $default + * @return mixed + * @static + */ + public static function input($key, $default = null){ + return \Illuminate\Routing\Router::input($key, $default); + } + + /** + * Get the currently dispatched route instance. + * + * @return \Illuminate\Routing\Route + * @static + */ + public static function getCurrentRoute(){ + return \Illuminate\Routing\Router::getCurrentRoute(); + } + + /** + * Get the currently dispatched route instance. + * + * @return \Illuminate\Routing\Route + * @static + */ + public static function current(){ + return \Illuminate\Routing\Router::current(); + } + + /** + * Check if a route with the given name exists. + * + * @param string $name + * @return bool + * @static + */ + public static function has($name){ + return \Illuminate\Routing\Router::has($name); + } + + /** + * Get the current route name. + * + * @return string|null + * @static + */ + public static function currentRouteName(){ + return \Illuminate\Routing\Router::currentRouteName(); + } + + /** + * Alias for the "currentRouteNamed" method. + * + * @param mixed string + * @return bool + * @static + */ + public static function is(){ + return \Illuminate\Routing\Router::is(); + } + + /** + * Determine if the current route matches a given name. + * + * @param string $name + * @return bool + * @static + */ + public static function currentRouteNamed($name){ + return \Illuminate\Routing\Router::currentRouteNamed($name); + } + + /** + * Get the current route action. + * + * @return string|null + * @static + */ + public static function currentRouteAction(){ + return \Illuminate\Routing\Router::currentRouteAction(); + } + + /** + * Alias for the "currentRouteUses" method. + * + * @param mixed string + * @return bool + * @static + */ + public static function uses(){ + return \Illuminate\Routing\Router::uses(); + } + + /** + * Determine if the current route action matches a given action. + * + * @param string $action + * @return bool + * @static + */ + public static function currentRouteUses($action){ + return \Illuminate\Routing\Router::currentRouteUses($action); + } + + /** + * Get the request currently being dispatched. + * + * @return \Illuminate\Http\Request + * @static + */ + public static function getCurrentRequest(){ + return \Illuminate\Routing\Router::getCurrentRequest(); + } + + /** + * Get the underlying route collection. + * + * @return \Illuminate\Routing\RouteCollection + * @static + */ + public static function getRoutes(){ + return \Illuminate\Routing\Router::getRoutes(); + } + + /** + * Set the route collection instance. + * + * @param \Illuminate\Routing\RouteCollection $routes + * @return void + * @static + */ + public static function setRoutes($routes){ + \Illuminate\Routing\Router::setRoutes($routes); + } + + /** + * Get the global "where" patterns. + * + * @return array + * @static + */ + public static function getPatterns(){ + return \Illuminate\Routing\Router::getPatterns(); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param callable $macro + * @return void + * @static + */ + public static function macro($name, $macro){ + \Illuminate\Routing\Router::macro($name, $macro); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name){ + return \Illuminate\Routing\Router::hasMacro($name); + } + + } + + + class Schema extends \Illuminate\Support\Facades\Schema{ + + /** + * Determine if the given table exists. + * + * @param string $table + * @return bool + * @static + */ + public static function hasTable($table){ + return \Illuminate\Database\Schema\Builder::hasTable($table); + } + + /** + * Determine if the given table has a given column. + * + * @param string $table + * @param string $column + * @return bool + * @static + */ + public static function hasColumn($table, $column){ + return \Illuminate\Database\Schema\Builder::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){ + return \Illuminate\Database\Schema\Builder::hasColumns($table, $columns); + } + + /** + * Get the column listing for a given table. + * + * @param string $table + * @return array + * @static + */ + public static function getColumnListing($table){ + return \Illuminate\Database\Schema\Builder::getColumnListing($table); + } + + /** + * Modify a table on the schema. + * + * @param string $table + * @param \Closure $callback + * @return \Illuminate\Database\Schema\Blueprint + * @static + */ + public static function table($table, $callback){ + return \Illuminate\Database\Schema\Builder::table($table, $callback); + } + + /** + * Create a new table on the schema. + * + * @param string $table + * @param \Closure $callback + * @return \Illuminate\Database\Schema\Blueprint + * @static + */ + public static function create($table, $callback){ + return \Illuminate\Database\Schema\Builder::create($table, $callback); + } + + /** + * Drop a table from the schema. + * + * @param string $table + * @return \Illuminate\Database\Schema\Blueprint + * @static + */ + public static function drop($table){ + return \Illuminate\Database\Schema\Builder::drop($table); + } + + /** + * Drop a table from the schema if it exists. + * + * @param string $table + * @return \Illuminate\Database\Schema\Blueprint + * @static + */ + public static function dropIfExists($table){ + return \Illuminate\Database\Schema\Builder::dropIfExists($table); + } + + /** + * Rename a table on the schema. + * + * @param string $from + * @param string $to + * @return \Illuminate\Database\Schema\Blueprint + * @static + */ + public static function rename($from, $to){ + return \Illuminate\Database\Schema\Builder::rename($from, $to); + } + + /** + * Get the database connection instance. + * + * @return \Illuminate\Database\Connection + * @static + */ + public static function getConnection(){ + return \Illuminate\Database\Schema\Builder::getConnection(); + } + + /** + * Set the database connection instance. + * + * @param \Illuminate\Database\Connection $connection + * @return $this + * @static + */ + public static function setConnection($connection){ + return \Illuminate\Database\Schema\Builder::setConnection($connection); + } + + /** + * Set the Schema Blueprint resolver callback. + * + * @param \Closure $resolver + * @return void + * @static + */ + public static function blueprintResolver($resolver){ + \Illuminate\Database\Schema\Builder::blueprintResolver($resolver); + } + + } + + + class Session extends \Illuminate\Support\Facades\Session{ + + /** + * Get the session configuration. + * + * @return array + * @static + */ + public static function getSessionConfig(){ + return \Illuminate\Session\SessionManager::getSessionConfig(); + } + + /** + * Get the default session driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver(){ + return \Illuminate\Session\SessionManager::getDefaultDriver(); + } + + /** + * Set the default session driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name){ + \Illuminate\Session\SessionManager::setDefaultDriver($name); + } + + /** + * Get a driver instance. + * + * @param string $driver + * @return mixed + * @static + */ + public static function driver($driver = null){ + //Method inherited from \Illuminate\Support\Manager + return \Illuminate\Session\SessionManager::driver($driver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return $this + * @static + */ + public static function extend($driver, $callback){ + //Method inherited from \Illuminate\Support\Manager + return \Illuminate\Session\SessionManager::extend($driver, $callback); + } + + /** + * Get all of the created "drivers". + * + * @return array + * @static + */ + public static function getDrivers(){ + //Method inherited from \Illuminate\Support\Manager + return \Illuminate\Session\SessionManager::getDrivers(); + } + + /** + * Starts the session storage. + * + * @return bool True if session started. + * @throws \RuntimeException If session fails to start. + * @api + * @static + */ + public static function start(){ + return \Illuminate\Session\Store::start(); + } + + /** + * Returns the session ID. + * + * @return string The session ID. + * @api + * @static + */ + public static function getId(){ + return \Illuminate\Session\Store::getId(); + } + + /** + * Sets the session ID. + * + * @param string $id + * @api + * @static + */ + public static function setId($id){ + return \Illuminate\Session\Store::setId($id); + } + + /** + * Determine if this is a valid session ID. + * + * @param string $id + * @return bool + * @static + */ + public static function isValidId($id){ + return \Illuminate\Session\Store::isValidId($id); + } + + /** + * Returns the session name. + * + * @return mixed The session name. + * @api + * @static + */ + public static function getName(){ + return \Illuminate\Session\Store::getName(); + } + + /** + * Sets the session name. + * + * @param string $name + * @api + * @static + */ + public static function setName($name){ + return \Illuminate\Session\Store::setName($name); + } + + /** + * Invalidates the current session. + * + * Clears all session attributes and flashes and regenerates the + * session and deletes the old session from persistence. + * + * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value + * will leave the system settings unchanged, 0 sets the cookie + * to expire with browser session. Time is in seconds, and is + * not a Unix timestamp. + * @return bool True if session invalidated, false if error. + * @api + * @static + */ + public static function invalidate($lifetime = null){ + return \Illuminate\Session\Store::invalidate($lifetime); + } + + /** + * Migrates the current session to a new session id while maintaining all + * session attributes. + * + * @param bool $destroy Whether to delete the old session or leave it to garbage collection. + * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value + * will leave the system settings unchanged, 0 sets the cookie + * to expire with browser session. Time is in seconds, and is + * not a Unix timestamp. + * @return bool True if session migrated, false if error. + * @api + * @static + */ + public static function migrate($destroy = false, $lifetime = null){ + return \Illuminate\Session\Store::migrate($destroy, $lifetime); + } + + /** + * Generate a new session identifier. + * + * @param bool $destroy + * @return bool + * @static + */ + public static function regenerate($destroy = false){ + return \Illuminate\Session\Store::regenerate($destroy); + } + + /** + * Force the session to be saved and closed. + * + * This method is generally not required for real sessions as + * the session will be automatically saved at the end of + * code execution. + * + * @static + */ + public static function save(){ + return \Illuminate\Session\Store::save(); + } + + /** + * Age the flash data for the session. + * + * @return void + * @static + */ + public static function ageFlashData(){ + \Illuminate\Session\Store::ageFlashData(); + } + + /** + * Checks if an attribute is defined. + * + * @param string $name The attribute name + * @return bool true if the attribute is defined, false otherwise + * @api + * @static + */ + public static function has($name){ + return \Illuminate\Session\Store::has($name); + } + + /** + * Returns an attribute. + * + * @param string $name The attribute name + * @param mixed $default The default value if not found. + * @return mixed + * @api + * @static + */ + public static function get($name, $default = null){ + return \Illuminate\Session\Store::get($name, $default); + } + + /** + * Get the value of a given key and then forget it. + * + * @param string $key + * @param string $default + * @return mixed + * @static + */ + public static function pull($key, $default = null){ + return \Illuminate\Session\Store::pull($key, $default); + } + + /** + * Determine if the session contains old input. + * + * @param string $key + * @return bool + * @static + */ + public static function hasOldInput($key = null){ + return \Illuminate\Session\Store::hasOldInput($key); + } + + /** + * Get the requested item from the flashed input array. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function getOldInput($key = null, $default = null){ + return \Illuminate\Session\Store::getOldInput($key, $default); + } + + /** + * Sets an attribute. + * + * @param string $name + * @param mixed $value + * @api + * @static + */ + public static function set($name, $value){ + return \Illuminate\Session\Store::set($name, $value); + } + + /** + * Put a key / value pair or array of key / value pairs in the session. + * + * @param string|array $key + * @param mixed|null $value + * @return void + * @static + */ + public static function put($key, $value = null){ + \Illuminate\Session\Store::put($key, $value); + } + + /** + * Push a value onto a session array. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function push($key, $value){ + \Illuminate\Session\Store::push($key, $value); + } + + /** + * Flash a key / value pair to the session. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function flash($key, $value){ + \Illuminate\Session\Store::flash($key, $value); + } + + /** + * Flash an input array to the session. + * + * @param array $value + * @return void + * @static + */ + public static function flashInput($value){ + \Illuminate\Session\Store::flashInput($value); + } + + /** + * Reflash all of the session flash data. + * + * @return void + * @static + */ + public static function reflash(){ + \Illuminate\Session\Store::reflash(); + } + + /** + * Reflash a subset of the current flash data. + * + * @param array|mixed $keys + * @return void + * @static + */ + public static function keep($keys = null){ + \Illuminate\Session\Store::keep($keys); + } + + /** + * Returns attributes. + * + * @return array Attributes + * @api + * @static + */ + public static function all(){ + return \Illuminate\Session\Store::all(); + } + + /** + * Sets attributes. + * + * @param array $attributes Attributes + * @static + */ + public static function replace($attributes){ + return \Illuminate\Session\Store::replace($attributes); + } + + /** + * Removes an attribute. + * + * @param string $name + * @return mixed The removed value or null when it does not exist + * @api + * @static + */ + public static function remove($name){ + return \Illuminate\Session\Store::remove($name); + } + + /** + * Remove an item from the session. + * + * @param string $key + * @return void + * @static + */ + public static function forget($key){ + \Illuminate\Session\Store::forget($key); + } + + /** + * Clears all attributes. + * + * @api + * @static + */ + public static function clear(){ + return \Illuminate\Session\Store::clear(); + } + + /** + * Remove all of the items from the session. + * + * @return void + * @static + */ + public static function flush(){ + \Illuminate\Session\Store::flush(); + } + + /** + * Checks if the session was started. + * + * @return bool + * @static + */ + public static function isStarted(){ + return \Illuminate\Session\Store::isStarted(); + } + + /** + * Registers a SessionBagInterface with the session. + * + * @param \Symfony\Component\HttpFoundation\Session\SessionBagInterface $bag + * @static + */ + public static function registerBag($bag){ + return \Illuminate\Session\Store::registerBag($bag); + } + + /** + * Gets a bag instance by name. + * + * @param string $name + * @return \Symfony\Component\HttpFoundation\Session\SessionBagInterface + * @static + */ + public static function getBag($name){ + return \Illuminate\Session\Store::getBag($name); + } + + /** + * Gets session meta. + * + * @return \Symfony\Component\HttpFoundation\Session\MetadataBag + * @static + */ + public static function getMetadataBag(){ + return \Illuminate\Session\Store::getMetadataBag(); + } + + /** + * Get the raw bag data array for a given bag. + * + * @param string $name + * @return array + * @static + */ + public static function getBagData($name){ + return \Illuminate\Session\Store::getBagData($name); + } + + /** + * Get the CSRF token value. + * + * @return string + * @static + */ + public static function token(){ + return \Illuminate\Session\Store::token(); + } + + /** + * Get the CSRF token value. + * + * @return string + * @static + */ + public static function getToken(){ + return \Illuminate\Session\Store::getToken(); + } + + /** + * Regenerate the CSRF token value. + * + * @return void + * @static + */ + public static function regenerateToken(){ + \Illuminate\Session\Store::regenerateToken(); + } + + /** + * Get the previous URL from the session. + * + * @return string|null + * @static + */ + public static function previousUrl(){ + return \Illuminate\Session\Store::previousUrl(); + } + + /** + * Set the "previous" URL in the session. + * + * @param string $url + * @return void + * @static + */ + public static function setPreviousUrl($url){ + \Illuminate\Session\Store::setPreviousUrl($url); + } + + /** + * Set the existence of the session on the handler if applicable. + * + * @param bool $value + * @return void + * @static + */ + public static function setExists($value){ + \Illuminate\Session\Store::setExists($value); + } + + /** + * Get the underlying session handler implementation. + * + * @return \SessionHandlerInterface + * @static + */ + public static function getHandler(){ + return \Illuminate\Session\Store::getHandler(); + } + + /** + * Determine if the session handler needs a request. + * + * @return bool + * @static + */ + public static function handlerNeedsRequest(){ + return \Illuminate\Session\Store::handlerNeedsRequest(); + } + + /** + * Set the request on the handler instance. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return void + * @static + */ + public static function setRequestOnHandler($request){ + \Illuminate\Session\Store::setRequestOnHandler($request); + } + + } + + + class Storage extends \Illuminate\Support\Facades\Storage{ + + /** + * Get a filesystem instance. + * + * @param string $name + * @return \Illuminate\Contracts\Filesystem\Filesystem + * @static + */ + public static function drive($name = null){ + return \Illuminate\Filesystem\FilesystemManager::drive($name); + } + + /** + * Get a filesystem instance. + * + * @param string $name + * @return \Illuminate\Contracts\Filesystem\Filesystem + * @static + */ + public static function disk($name = null){ + return \Illuminate\Filesystem\FilesystemManager::disk($name); + } + + /** + * Create an instance of the local driver. + * + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Filesystem + * @static + */ + public static function createLocalDriver($config){ + return \Illuminate\Filesystem\FilesystemManager::createLocalDriver($config); + } + + /** + * Create an instance of the ftp driver. + * + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Filesystem + * @static + */ + public static function createFtpDriver($config){ + return \Illuminate\Filesystem\FilesystemManager::createFtpDriver($config); + } + + /** + * Create an instance of the Amazon S3 driver. + * + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Cloud + * @static + */ + public static function createS3Driver($config){ + return \Illuminate\Filesystem\FilesystemManager::createS3Driver($config); + } + + /** + * Create an instance of the Rackspace driver. + * + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Cloud + * @static + */ + public static function createRackspaceDriver($config){ + return \Illuminate\Filesystem\FilesystemManager::createRackspaceDriver($config); + } + + /** + * Get the default driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver(){ + return \Illuminate\Filesystem\FilesystemManager::getDefaultDriver(); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return $this + * @static + */ + public static function extend($driver, $callback){ + return \Illuminate\Filesystem\FilesystemManager::extend($driver, $callback); + } + + } + + + class URL extends \Illuminate\Support\Facades\URL{ + + /** + * Get the full URL for the current request. + * + * @return string + * @static + */ + public static function full(){ + return \Illuminate\Routing\UrlGenerator::full(); + } + + /** + * Get the current URL for the request. + * + * @return string + * @static + */ + public static function current(){ + return \Illuminate\Routing\UrlGenerator::current(); + } + + /** + * Get the URL for the previous request. + * + * @return string + * @static + */ + public static function previous(){ + return \Illuminate\Routing\UrlGenerator::previous(); + } + + /** + * Generate a 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 = array(), $secure = null){ + return \Illuminate\Routing\UrlGenerator::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 = array()){ + return \Illuminate\Routing\UrlGenerator::secure($path, $parameters); + } + + /** + * Generate a URL to an application asset. + * + * @param string $path + * @param bool|null $secure + * @return string + * @static + */ + public static function asset($path, $secure = null){ + return \Illuminate\Routing\UrlGenerator::asset($path, $secure); + } + + /** + * Generate a URL to a secure asset. + * + * @param string $path + * @return string + * @static + */ + public static function secureAsset($path){ + return \Illuminate\Routing\UrlGenerator::secureAsset($path); + } + + /** + * Force the schema for URLs. + * + * @param string $schema + * @return void + * @static + */ + public static function forceSchema($schema){ + \Illuminate\Routing\UrlGenerator::forceSchema($schema); + } + + /** + * 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 = array(), $absolute = true){ + return \Illuminate\Routing\UrlGenerator::route($name, $parameters, $absolute); + } + + /** + * Get the URL to a controller action. + * + * @param string $action + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function action($action, $parameters = array(), $absolute = true){ + return \Illuminate\Routing\UrlGenerator::action($action, $parameters, $absolute); + } + + /** + * Set the forced root URL. + * + * @param string $root + * @return void + * @static + */ + public static function forceRootUrl($root){ + \Illuminate\Routing\UrlGenerator::forceRootUrl($root); + } + + /** + * Determine if the given path is a valid URL. + * + * @param string $path + * @return bool + * @static + */ + public static function isValidUrl($path){ + return \Illuminate\Routing\UrlGenerator::isValidUrl($path); + } + + /** + * Get the request instance. + * + * @return \Symfony\Component\HttpFoundation\Request + * @static + */ + public static function getRequest(){ + return \Illuminate\Routing\UrlGenerator::getRequest(); + } + + /** + * Set the current request instance. + * + * @param \Illuminate\Http\Request $request + * @return void + * @static + */ + public static function setRequest($request){ + \Illuminate\Routing\UrlGenerator::setRequest($request); + } + + /** + * Set the route collection. + * + * @param \Illuminate\Routing\RouteCollection $routes + * @return $this + * @static + */ + public static function setRoutes($routes){ + return \Illuminate\Routing\UrlGenerator::setRoutes($routes); + } + + /** + * Set the session resolver for the generator. + * + * @param callable $sessionResolver + * @return $this + * @static + */ + public static function setSessionResolver($sessionResolver){ + return \Illuminate\Routing\UrlGenerator::setSessionResolver($sessionResolver); + } + + /** + * Set the root controller namespace. + * + * @param string $rootNamespace + * @return $this + * @static + */ + public static function setRootControllerNamespace($rootNamespace){ + return \Illuminate\Routing\UrlGenerator::setRootControllerNamespace($rootNamespace); + } + + } + + + class Validator extends \Illuminate\Support\Facades\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 = array(), $customAttributes = array()){ + return \Illuminate\Validation\Factory::make($data, $rules, $messages, $customAttributes); + } + + /** + * Register a custom validator extension. + * + * @param string $rule + * @param \Closure|string $extension + * @param string $message + * @return void + * @static + */ + public static function extend($rule, $extension, $message = null){ + \Illuminate\Validation\Factory::extend($rule, $extension, $message); + } + + /** + * Register a custom implicit validator extension. + * + * @param string $rule + * @param \Closure|string $extension + * @param string $message + * @return void + * @static + */ + public static function extendImplicit($rule, $extension, $message = null){ + \Illuminate\Validation\Factory::extendImplicit($rule, $extension, $message); + } + + /** + * Register a custom implicit validator message replacer. + * + * @param string $rule + * @param \Closure|string $replacer + * @return void + * @static + */ + public static function replacer($rule, $replacer){ + \Illuminate\Validation\Factory::replacer($rule, $replacer); + } + + /** + * Set the Validator instance resolver. + * + * @param \Closure $resolver + * @return void + * @static + */ + public static function resolver($resolver){ + \Illuminate\Validation\Factory::resolver($resolver); + } + + /** + * Get the Translator implementation. + * + * @return \Symfony\Component\Translation\TranslatorInterface + * @static + */ + public static function getTranslator(){ + return \Illuminate\Validation\Factory::getTranslator(); + } + + /** + * Get the Presence Verifier implementation. + * + * @return \Illuminate\Validation\PresenceVerifierInterface + * @static + */ + public static function getPresenceVerifier(){ + return \Illuminate\Validation\Factory::getPresenceVerifier(); + } + + /** + * Set the Presence Verifier implementation. + * + * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier + * @return void + * @static + */ + public static function setPresenceVerifier($presenceVerifier){ + \Illuminate\Validation\Factory::setPresenceVerifier($presenceVerifier); + } + + } + + + class View extends \Illuminate\Support\Facades\View{ + + /** + * Get the evaluated view contents for the given view. + * + * @param string $path + * @param array $data + * @param array $mergeData + * @return \Illuminate\View\View + * @static + */ + public static function file($path, $data = array(), $mergeData = array()){ + return \Illuminate\View\Factory::file($path, $data, $mergeData); + } + + /** + * Get the evaluated view contents for the given view. + * + * @param string $view + * @param array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View + * @static + */ + public static function make($view, $data = array(), $mergeData = array()){ + return \Illuminate\View\Factory::make($view, $data, $mergeData); + } + + /** + * Get the evaluated view contents for a named view. + * + * @param string $view + * @param mixed $data + * @return \Illuminate\View\View + * @static + */ + public static function of($view, $data = array()){ + return \Illuminate\View\Factory::of($view, $data); + } + + /** + * Register a named view. + * + * @param string $view + * @param string $name + * @return void + * @static + */ + public static function name($view, $name){ + \Illuminate\View\Factory::name($view, $name); + } + + /** + * Add an alias for a view. + * + * @param string $view + * @param string $alias + * @return void + * @static + */ + public static function alias($view, $alias){ + \Illuminate\View\Factory::alias($view, $alias); + } + + /** + * Determine if a given view exists. + * + * @param string $view + * @return bool + * @static + */ + public static function exists($view){ + return \Illuminate\View\Factory::exists($view); + } + + /** + * 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|'){ + return \Illuminate\View\Factory::renderEach($view, $data, $iterator, $empty); + } + + /** + * Get the appropriate view engine for the given path. + * + * @param string $path + * @return \Illuminate\View\Engines\EngineInterface + * @throws \InvalidArgumentException + * @static + */ + public static function getEngineFromPath($path){ + return \Illuminate\View\Factory::getEngineFromPath($path); + } + + /** + * Add a piece of shared data to the environment. + * + * @param array|string $key + * @param mixed $value + * @return mixed + * @static + */ + public static function share($key, $value = null){ + return \Illuminate\View\Factory::share($key, $value); + } + + /** + * Register a view creator event. + * + * @param array|string $views + * @param \Closure|string $callback + * @return array + * @static + */ + public static function creator($views, $callback){ + return \Illuminate\View\Factory::creator($views, $callback); + } + + /** + * Register multiple view composers via an array. + * + * @param array $composers + * @return array + * @static + */ + public static function composers($composers){ + return \Illuminate\View\Factory::composers($composers); + } + + /** + * Register a view composer event. + * + * @param array|string $views + * @param \Closure|string $callback + * @param int|null $priority + * @return array + * @static + */ + public static function composer($views, $callback, $priority = null){ + return \Illuminate\View\Factory::composer($views, $callback, $priority); + } + + /** + * Call the composer for a given view. + * + * @param \Illuminate\View\View $view + * @return void + * @static + */ + public static function callComposer($view){ + \Illuminate\View\Factory::callComposer($view); + } + + /** + * Call the creator for a given view. + * + * @param \Illuminate\View\View $view + * @return void + * @static + */ + public static function callCreator($view){ + \Illuminate\View\Factory::callCreator($view); + } + + /** + * Start injecting content into a section. + * + * @param string $section + * @param string $content + * @return void + * @static + */ + public static function startSection($section, $content = ''){ + \Illuminate\View\Factory::startSection($section, $content); + } + + /** + * Inject inline content into a section. + * + * @param string $section + * @param string $content + * @return void + * @static + */ + public static function inject($section, $content){ + \Illuminate\View\Factory::inject($section, $content); + } + + /** + * Stop injecting content into a section and return its contents. + * + * @return string + * @static + */ + public static function yieldSection(){ + return \Illuminate\View\Factory::yieldSection(); + } + + /** + * Stop injecting content into a section. + * + * @param bool $overwrite + * @return string + * @static + */ + public static function stopSection($overwrite = false){ + return \Illuminate\View\Factory::stopSection($overwrite); + } + + /** + * Stop injecting content into a section and append it. + * + * @return string + * @static + */ + public static function appendSection(){ + return \Illuminate\View\Factory::appendSection(); + } + + /** + * Get the string contents of a section. + * + * @param string $section + * @param string $default + * @return string + * @static + */ + public static function yieldContent($section, $default = ''){ + return \Illuminate\View\Factory::yieldContent($section, $default); + } + + /** + * Flush all of the section contents. + * + * @return void + * @static + */ + public static function flushSections(){ + \Illuminate\View\Factory::flushSections(); + } + + /** + * Flush all of the section contents if done rendering. + * + * @return void + * @static + */ + public static function flushSectionsIfDoneRendering(){ + \Illuminate\View\Factory::flushSectionsIfDoneRendering(); + } + + /** + * Increment the rendering counter. + * + * @return void + * @static + */ + public static function incrementRender(){ + \Illuminate\View\Factory::incrementRender(); + } + + /** + * Decrement the rendering counter. + * + * @return void + * @static + */ + public static function decrementRender(){ + \Illuminate\View\Factory::decrementRender(); + } + + /** + * Check if there are no active render operations. + * + * @return bool + * @static + */ + public static function doneRendering(){ + return \Illuminate\View\Factory::doneRendering(); + } + + /** + * Add a location to the array of view locations. + * + * @param string $location + * @return void + * @static + */ + public static function addLocation($location){ + \Illuminate\View\Factory::addLocation($location); + } + + /** + * Add a new namespace to the loader. + * + * @param string $namespace + * @param string|array $hints + * @return void + * @static + */ + public static function addNamespace($namespace, $hints){ + \Illuminate\View\Factory::addNamespace($namespace, $hints); + } + + /** + * Prepend a new namespace to the loader. + * + * @param string $namespace + * @param string|array $hints + * @return void + * @static + */ + public static function prependNamespace($namespace, $hints){ + \Illuminate\View\Factory::prependNamespace($namespace, $hints); + } + + /** + * Register a valid view extension and its engine. + * + * @param string $extension + * @param string $engine + * @param \Closure $resolver + * @return void + * @static + */ + public static function addExtension($extension, $engine, $resolver = null){ + \Illuminate\View\Factory::addExtension($extension, $engine, $resolver); + } + + /** + * Get the extension to engine bindings. + * + * @return array + * @static + */ + public static function getExtensions(){ + return \Illuminate\View\Factory::getExtensions(); + } + + /** + * Get the engine resolver instance. + * + * @return \Illuminate\View\Engines\EngineResolver + * @static + */ + public static function getEngineResolver(){ + return \Illuminate\View\Factory::getEngineResolver(); + } + + /** + * Get the view finder instance. + * + * @return \Illuminate\View\ViewFinderInterface + * @static + */ + public static function getFinder(){ + return \Illuminate\View\Factory::getFinder(); + } + + /** + * Set the view finder instance. + * + * @param \Illuminate\View\ViewFinderInterface $finder + * @return void + * @static + */ + public static function setFinder($finder){ + \Illuminate\View\Factory::setFinder($finder); + } + + /** + * Get the event dispatcher instance. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getDispatcher(){ + return \Illuminate\View\Factory::getDispatcher(); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setDispatcher($events){ + \Illuminate\View\Factory::setDispatcher($events); + } + + /** + * Get the IoC container instance. + * + * @return \Illuminate\Contracts\Container\Container + * @static + */ + public static function getContainer(){ + return \Illuminate\View\Factory::getContainer(); + } + + /** + * Set the IoC container instance. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return void + * @static + */ + public static function setContainer($container){ + \Illuminate\View\Factory::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){ + return \Illuminate\View\Factory::shared($key, $default); + } + + /** + * Get all of the shared data for the environment. + * + * @return array + * @static + */ + public static function getShared(){ + return \Illuminate\View\Factory::getShared(); + } + + /** + * Check if section exists. + * + * @param string $name + * @return bool + * @static + */ + public static function hasSection($name){ + return \Illuminate\View\Factory::hasSection($name); + } + + /** + * Get the entire array of sections. + * + * @return array + * @static + */ + public static function getSections(){ + return \Illuminate\View\Factory::getSections(); + } + + /** + * Get all of the registered named views in environment. + * + * @return array + * @static + */ + public static function getNames(){ + return \Illuminate\View\Factory::getNames(); + } + + } + + + class Form extends \Illuminate\Html\FormFacade{ + + /** + * Open up a new HTML form. + * + * @param array $options + * @return string + * @static + */ + public static function open($options = array()){ + return \Illuminate\Html\FormBuilder::open($options); + } + + /** + * Create a new model based form builder. + * + * @param mixed $model + * @param array $options + * @return string + * @static + */ + public static function model($model, $options = array()){ + return \Illuminate\Html\FormBuilder::model($model, $options); + } + + /** + * Set the model instance on the form builder. + * + * @param mixed $model + * @return void + * @static + */ + public static function setModel($model){ + \Illuminate\Html\FormBuilder::setModel($model); + } + + /** + * Close the current form. + * + * @return string + * @static + */ + public static function close(){ + return \Illuminate\Html\FormBuilder::close(); + } + + /** + * Generate a hidden field with the current CSRF token. + * + * @return string + * @static + */ + public static function token(){ + return \Illuminate\Html\FormBuilder::token(); + } + + /** + * Create a form label element. + * + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function label($name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::label($name, $value, $options); + } + + /** + * Create a form input field. + * + * @param string $type + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function input($type, $name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::input($type, $name, $value, $options); + } + + /** + * Create a text input field. + * + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function text($name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::text($name, $value, $options); + } + + /** + * Create a password input field. + * + * @param string $name + * @param array $options + * @return string + * @static + */ + public static function password($name, $options = array()){ + return \Illuminate\Html\FormBuilder::password($name, $options); + } + + /** + * Create a hidden input field. + * + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function hidden($name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::hidden($name, $value, $options); + } + + /** + * Create an e-mail input field. + * + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function email($name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::email($name, $value, $options); + } + + /** + * Create a url input field. + * + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function url($name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::url($name, $value, $options); + } + + /** + * Create a file input field. + * + * @param string $name + * @param array $options + * @return string + * @static + */ + public static function file($name, $options = array()){ + return \Illuminate\Html\FormBuilder::file($name, $options); + } + + /** + * Create a textarea input field. + * + * @param string $name + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function textarea($name, $value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::textarea($name, $value, $options); + } + + /** + * Create a select box field. + * + * @param string $name + * @param array $list + * @param string $selected + * @param array $options + * @return string + * @static + */ + public static function select($name, $list = array(), $selected = null, $options = array()){ + return \Illuminate\Html\FormBuilder::select($name, $list, $selected, $options); + } + + /** + * Create a select range field. + * + * @param string $name + * @param string $begin + * @param string $end + * @param string $selected + * @param array $options + * @return string + * @static + */ + public static function selectRange($name, $begin, $end, $selected = null, $options = array()){ + return \Illuminate\Html\FormBuilder::selectRange($name, $begin, $end, $selected, $options); + } + + /** + * Create a select year field. + * + * @param string $name + * @param string $begin + * @param string $end + * @param string $selected + * @param array $options + * @return string + * @static + */ + public static function selectYear(){ + return \Illuminate\Html\FormBuilder::selectYear(); + } + + /** + * Create a select month field. + * + * @param string $name + * @param string $selected + * @param array $options + * @param string $format + * @return string + * @static + */ + public static function selectMonth($name, $selected = null, $options = array(), $format = '%B'){ + return \Illuminate\Html\FormBuilder::selectMonth($name, $selected, $options, $format); + } + + /** + * Get the select option for the given value. + * + * @param string $display + * @param string $value + * @param string $selected + * @return string + * @static + */ + public static function getSelectOption($display, $value, $selected){ + return \Illuminate\Html\FormBuilder::getSelectOption($display, $value, $selected); + } + + /** + * Create a checkbox input field. + * + * @param string $name + * @param mixed $value + * @param bool $checked + * @param array $options + * @return string + * @static + */ + public static function checkbox($name, $value = 1, $checked = null, $options = array()){ + return \Illuminate\Html\FormBuilder::checkbox($name, $value, $checked, $options); + } + + /** + * Create a radio button input field. + * + * @param string $name + * @param mixed $value + * @param bool $checked + * @param array $options + * @return string + * @static + */ + public static function radio($name, $value = null, $checked = null, $options = array()){ + return \Illuminate\Html\FormBuilder::radio($name, $value, $checked, $options); + } + + /** + * Create a HTML reset input element. + * + * @param string $value + * @param array $attributes + * @return string + * @static + */ + public static function reset($value, $attributes = array()){ + return \Illuminate\Html\FormBuilder::reset($value, $attributes); + } + + /** + * Create a HTML image input element. + * + * @param string $url + * @param string $name + * @param array $attributes + * @return string + * @static + */ + public static function image($url, $name = null, $attributes = array()){ + return \Illuminate\Html\FormBuilder::image($url, $name, $attributes); + } + + /** + * Create a submit button element. + * + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function submit($value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::submit($value, $options); + } + + /** + * Create a button element. + * + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function button($value = null, $options = array()){ + return \Illuminate\Html\FormBuilder::button($value, $options); + } + + /** + * Get the ID attribute for a field name. + * + * @param string $name + * @param array $attributes + * @return string + * @static + */ + public static function getIdAttribute($name, $attributes){ + return \Illuminate\Html\FormBuilder::getIdAttribute($name, $attributes); + } + + /** + * Get the value that should be assigned to the field. + * + * @param string $name + * @param string $value + * @return string + * @static + */ + public static function getValueAttribute($name, $value = null){ + return \Illuminate\Html\FormBuilder::getValueAttribute($name, $value); + } + + /** + * Get a value from the session's old input. + * + * @param string $name + * @return string + * @static + */ + public static function old($name){ + return \Illuminate\Html\FormBuilder::old($name); + } + + /** + * Determine if the old input is empty. + * + * @return bool + * @static + */ + public static function oldInputIsEmpty(){ + return \Illuminate\Html\FormBuilder::oldInputIsEmpty(); + } + + /** + * Get the session store implementation. + * + * @return \Illuminate\Session\Store $session + * @static + */ + public static function getSessionStore(){ + return \Illuminate\Html\FormBuilder::getSessionStore(); + } + + /** + * Set the session store implementation. + * + * @param \Illuminate\Session\Store $session + * @return $this + * @static + */ + public static function setSessionStore($session){ + return \Illuminate\Html\FormBuilder::setSessionStore($session); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param callable $macro + * @return void + * @static + */ + public static function macro($name, $macro){ + \Illuminate\Html\FormBuilder::macro($name, $macro); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name){ + return \Illuminate\Html\FormBuilder::hasMacro($name); + } + + } + + + class HTML extends \Illuminate\Html\HtmlFacade{ + + /** + * Convert an HTML string to entities. + * + * @param string $value + * @return string + * @static + */ + public static function entities($value){ + return \Illuminate\Html\HtmlBuilder::entities($value); + } + + /** + * Convert entities to HTML characters. + * + * @param string $value + * @return string + * @static + */ + public static function decode($value){ + return \Illuminate\Html\HtmlBuilder::decode($value); + } + + /** + * Generate a link to a JavaScript file. + * + * @param string $url + * @param array $attributes + * @param bool $secure + * @return string + * @static + */ + public static function script($url, $attributes = array(), $secure = null){ + return \Illuminate\Html\HtmlBuilder::script($url, $attributes, $secure); + } + + /** + * Generate a link to a CSS file. + * + * @param string $url + * @param array $attributes + * @param bool $secure + * @return string + * @static + */ + public static function style($url, $attributes = array(), $secure = null){ + return \Illuminate\Html\HtmlBuilder::style($url, $attributes, $secure); + } + + /** + * Generate an HTML image element. + * + * @param string $url + * @param string $alt + * @param array $attributes + * @param bool $secure + * @return string + * @static + */ + public static function image($url, $alt = null, $attributes = array(), $secure = null){ + return \Illuminate\Html\HtmlBuilder::image($url, $alt, $attributes, $secure); + } + + /** + * Generate a HTML link. + * + * @param string $url + * @param string $title + * @param array $attributes + * @param bool $secure + * @return string + * @static + */ + public static function link($url, $title = null, $attributes = array(), $secure = null){ + return \Illuminate\Html\HtmlBuilder::link($url, $title, $attributes, $secure); + } + + /** + * Generate a HTTPS HTML link. + * + * @param string $url + * @param string $title + * @param array $attributes + * @return string + * @static + */ + public static function secureLink($url, $title = null, $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::secureLink($url, $title, $attributes); + } + + /** + * Generate a HTML link to an asset. + * + * @param string $url + * @param string $title + * @param array $attributes + * @param bool $secure + * @return string + * @static + */ + public static function linkAsset($url, $title = null, $attributes = array(), $secure = null){ + return \Illuminate\Html\HtmlBuilder::linkAsset($url, $title, $attributes, $secure); + } + + /** + * Generate a HTTPS HTML link to an asset. + * + * @param string $url + * @param string $title + * @param array $attributes + * @return string + * @static + */ + public static function linkSecureAsset($url, $title = null, $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::linkSecureAsset($url, $title, $attributes); + } + + /** + * Generate a HTML link to a named route. + * + * @param string $name + * @param string $title + * @param array $parameters + * @param array $attributes + * @return string + * @static + */ + public static function linkRoute($name, $title = null, $parameters = array(), $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::linkRoute($name, $title, $parameters, $attributes); + } + + /** + * Generate a HTML link to a controller action. + * + * @param string $action + * @param string $title + * @param array $parameters + * @param array $attributes + * @return string + * @static + */ + public static function linkAction($action, $title = null, $parameters = array(), $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::linkAction($action, $title, $parameters, $attributes); + } + + /** + * Generate a HTML link to an email address. + * + * @param string $email + * @param string $title + * @param array $attributes + * @return string + * @static + */ + public static function mailto($email, $title = null, $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::mailto($email, $title, $attributes); + } + + /** + * Obfuscate an e-mail address to prevent spam-bots from sniffing it. + * + * @param string $email + * @return string + * @static + */ + public static function email($email){ + return \Illuminate\Html\HtmlBuilder::email($email); + } + + /** + * Generate an ordered list of items. + * + * @param array $list + * @param array $attributes + * @return string + * @static + */ + public static function ol($list, $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::ol($list, $attributes); + } + + /** + * Generate an un-ordered list of items. + * + * @param array $list + * @param array $attributes + * @return string + * @static + */ + public static function ul($list, $attributes = array()){ + return \Illuminate\Html\HtmlBuilder::ul($list, $attributes); + } + + /** + * Build an HTML attribute string from an array. + * + * @param array $attributes + * @return string + * @static + */ + public static function attributes($attributes){ + return \Illuminate\Html\HtmlBuilder::attributes($attributes); + } + + /** + * Obfuscate a string to prevent spam-bots from sniffing it. + * + * @param string $value + * @return string + * @static + */ + public static function obfuscate($value){ + return \Illuminate\Html\HtmlBuilder::obfuscate($value); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param callable $macro + * @return void + * @static + */ + public static function macro($name, $macro){ + \Illuminate\Html\HtmlBuilder::macro($name, $macro); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name){ + return \Illuminate\Html\HtmlBuilder::hasMacro($name); + } + + } + + + class Recaptcha extends \Greggilbert\Recaptcha\Facades\Recaptcha{ + + /** + * Render the recaptcha + * + * @param array $options + * @return \Greggilbert\Recaptcha\view + * @static + */ + public static function render($options = array()){ + return \Greggilbert\Recaptcha\Recaptcha::render($options); + } + + } + + +} + diff --git a/app/Console/Commands/AddTags.php b/app/Console/Commands/AddTags.php new file mode 100644 index 0000000..5289ad8 --- /dev/null +++ b/app/Console/Commands/AddTags.php @@ -0,0 +1,92 @@ +with('category')->chunk(200, function($videos) use ($count) { + foreach($videos as $v) { + echo 'Updating Video with ID: ', $v->id, PHP_EOL; + $v->detag(); + // quick and dirty. not 100% correct though. + if($v->category->shortname === 'pr0n') + $v->tag('nsfw'); + else + $v->tag('sfw'); + + $v->tag(array_filter([$v->category->shortname + , $v->category->name + , $v->interpret + , $v->songtitle + , $v->imgsource + ], function($elem) { + return !empty(trim($elem)); + })); + $count++; + } + }); + echo PHP_EOL, PHP_EOL, 'Updated ', $count, ' Videos.', PHP_EOL, PHP_EOL, PHP_EOL; + + + // User filters + echo 'UPDATING USERS', PHP_EOL, '==============', PHP_EOL; + $count = 0; + $categories = Category::withTrashed()->get()->keyBy('id'); + + User::withTrashed()->chunk(200, function($users) use (&$count, $categories) { + foreach($users as $u) { + echo 'Updating User: ', $u->username, PHP_EOL; + $u->categories = array_values($categories->filter(function($cat) use($u) { + return !in_array($cat->id, $u->categories); + })->map(function($cat) { + return $cat->shortname; + })->all()); + $u->save(); + $count++; + } + }); + + echo PHP_EOL, PHP_EOL, 'Updated ', $count, ' Users.', PHP_EOL, PHP_EOL, PHP_EOL; + } +} + diff --git a/app/Console/Commands/Inspire.php b/app/Console/Commands/Inspire.php new file mode 100644 index 0000000..db9ab85 --- /dev/null +++ b/app/Console/Commands/Inspire.php @@ -0,0 +1,33 @@ +comment(PHP_EOL.Inspiring::quote().PHP_EOL); + } +} diff --git a/app/Console/Commands/ReadException.php b/app/Console/Commands/ReadException.php new file mode 100644 index 0000000..f9523e6 --- /dev/null +++ b/app/Console/Commands/ReadException.php @@ -0,0 +1,52 @@ +argument('file'); + $c = file_get_contents($input); + if (false === $c) { + $this->error('File not found'); + return; + } + //dd(explode(PHP_EOL, $c)); + list($iv, $c) = explode(PHP_EOL, $c); + $iv = hex2bin($iv); + $m = openssl_decrypt($c, 'aes128', env('APP_KEY'), 0, $iv); + $this->line($m); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..f8d8167 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,32 @@ +command('inspire') + ->hourly(); + } +} diff --git a/app/Events/Event.php b/app/Events/Event.php new file mode 100644 index 0000000..ba2f888 --- /dev/null +++ b/app/Events/Event.php @@ -0,0 +1,8 @@ +bound('sentry') && $this->shouldReport($e)) { + app('sentry')->captureException($e); + } + return parent::report($e); + } + + /** + * Render an exception into an HTTP response. + * + * @param \Illuminate\Http\Request $request + * @param \Exception $e + * @return \Illuminate\Http\Response + * @todo Perhaps replace odd encrypted error with Sentry notification + */ + public function render($request, Exception $e) + { + if ($e instanceof ModelNotFoundException) { + $e = new NotFoundHttpException($e->getMessage(), $e); + } + + if ($this->isUnauthorizedException($e)) { + $e = new HttpException(403, $e->getMessage()); + } + if ($this->isHttpException($e)) { + return $this->toIlluminateResponse($this->renderHttpException($e), $e); + } else { + $res = \Response::make( + view('errors.500', ['exception' => $e]), + 500); + $res->exception = $e; + return $res; + } + + + //return parent::render($request, $e); + } +} diff --git a/app/Helpers/HumanReadable.php b/app/Helpers/HumanReadable.php new file mode 100644 index 0000000..e77b62a --- /dev/null +++ b/app/Helpers/HumanReadable.php @@ -0,0 +1,17 @@ + 1024; $i++) { + $bytes /= 1024; + } + + return round($bytes, 2) . ' ' . $units[$i]; + } +} diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php new file mode 100644 index 0000000..2d265d9 --- /dev/null +++ b/app/Http/Controllers/CategoryController.php @@ -0,0 +1,116 @@ + Category::all()]); + } + + /** + * Show the form for creating a new resource. + * + * @return \Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * @return \Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param string $shortname + * @param int $id + * @return \Response + */ + public function showVideo($shortname, $id = null) + { + $category = Category::whereShortname($shortname)->first(); + if (is_null($category)) { + return redirect()->back()->with('error', 'Category not found'); + } + if (is_null($id)) { + $video = Video::getRandom($category); + if ($video instanceof HasMany) { + $video = $video->first(); + } + else { + return redirect()->back()->with('error', 'Category is empty.'); + } + return redirect($shortname . '/' . $video->id); + } else { + // Don't filter on specific video. + // TODO: Add warning page + $video = $category->videos()->find($id); + } + if (is_null($video)) { + return redirect()->back()->with('error', 'Category is empty.'); + } + + return view('video', [ + 'video' => $video, + 'related' => $category, + 'banner' => Banner::getRandom($video->isSfw())]); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param Request $request + * @param int $id + * @return \Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Response + */ + public function destroy($id) + { + // + } +} diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php new file mode 100644 index 0000000..74e84cf --- /dev/null +++ b/app/Http/Controllers/CommentController.php @@ -0,0 +1,237 @@ +has('username')) return JsonResponse::create('Not found', '304'); + $user = User::whereUsername(urldecode($request->get('username')))->first(); + if(!$user) return JsonResponse::create('Not found', '304'); + return $user->comments()->orderBy('id', 'desc')->paginate(10); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request, $id) + { + $user = auth()->check() ? auth()->user() : null; + $xhr = $request->ajax(); + + if(is_null($user)) return $xhr ? "Not logged in" : redirect()->back()->with('error', 'Not logged in'); + if(!$request->has('comment')) return $xhr ? "You need to enter a comment" : redirect()->back()->with('error', 'You need to enter a comment'); + if(mb_strlen(trim($request->get('comment'))) > 2000 ) return $xhr ? "Comment to long" : redirect()->back()->with('error', 'Comment to long'); + + $video = Video::findOrFail($id); + + $com = new Comment(); + $com->content = trim($request->get('comment')); + $com->user()->associate($user); + $com->video()->associate($video); + $com->save(); + + $sent = []; + foreach($com->getMentioned() as $mentioned) { + Message::send($user->id, $mentioned->id, $user->username . ' mentioned you in a comment', view('messages.commentmention', ['video' => $video, 'user' => $user, 'comment' => $com])); + $sent[] = $mentioned; + } + + foreach($com->answered() as $answered) { + if(array_search($answered, $sent) !== false) + continue; + Message::send($user->id, $answered->id, $user->username . ' answered on your comment', view('messages.commentanswer', ['video' => $video, 'user' => $user, 'comment' => $com])); + $sent[] = $answered; + } + + if($user->id != $video->user->id) + if(array_search($video->user, $sent) === false) + Message::send($user->id, $video->user->id, $user->username . ' commented on your video', view('messages.videocomment', ['video' => $video, 'user' => $user, 'comment' => $com])); + + return $xhr ? view('partials.comment', ['comment' => $com, 'mod' => $user->can('delete_comment')]) : redirect()->back()->with('success', 'Comment successfully saved'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $comment = Comment::whereId($id)->first(); + if(!is_null($comment)) { + return JsonResponse::create(array( + 'error' => 'null', + 'comment' => Comment::whereId($id)->first()->content) + ); + } + return JsonResponse::create(array( + 'error' => 'comment_not_found' + )); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + if(!($request->has('comment'))) + return JsonResponse::create(array('error' => 'invalid_request')); + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return JsonResponse::create(array('error' => 'not_logged_in')); + + if(!$user->can('edit_comment')) + return JsonResponse::create(array('error' => 'insufficient_permissions')); + + if(is_null($comment = Comment::whereId($id)->first())) + return JsonResponse::create(array('error' => 'comment_not_found')); + + $comment->content = trim($request->get('comment')); + $comment->save(); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'edit'; + $log->target_type = 'comment'; + $log->target_id = $id; + $log->save(); + + return JsonResponse::create(array( + 'error' => 'null', + 'rendered_comment' => Comment::simplemd($comment->content) + )); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy(Request $request, $id) + { + if(!$request->has('reason')) + return 'invalid_request'; + + $reason = trim($request->get('reason')); + if($reason == '') + return 'invalid_request'; + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return 'not_logged_in'; + + if(!$user->can('delete_comment')) + return 'insufficient_permissions'; + + $comment = Comment::whereId($id)->first(); + if(is_null($comment)) + return 'comment_not_found'; + + $receiver = $comment->user; + $video = $comment->video; + Comment::destroy($id); + + if($user->id != $receiver->id) + Message::send(1, $receiver->id, 'A moderator deleted your comment', view('messages.moderation.commentdelete', ['video' => $video, 'comment' => $comment, 'reason' => $reason])); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'delete'; + $log->target_type = 'comment'; + $log->target_id = $id; + $log->reason = $reason; + $log->save(); + + return 'success'; + } + + public function restore(Request $request, $id) + { + if(!$request->has('reason')) + return 'invalid_request'; + + $reason = trim($request->get('reason')); + if($reason == '') + return 'invalid_request'; + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return 'not_logged_in'; + + if(!$user->can('delete_comment')) + return 'insufficient_permissions'; + + $comment = Comment::withTrashed()->whereId($id)->first(); + if(is_null($comment)) + return 'comment_not_found'; + + if(!$comment->trashed()) + return 'comment_not_deleted'; + + $receiver = $comment->user; + $video = $comment->video; + $comment->restore(); + + if($user->id != $receiver->id) + Message::send(1, $receiver->id, 'A moderator restored your comment', view('messages.moderation.commentrestore', ['video' => $video, 'comment' => $comment, 'reason' => $reason])); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'restore'; + $log->target_type = 'comment'; + $log->target_id = $id; + $log->reason = $reason; + $log->save(); + + return 'success'; + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..4eb37d5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +check()) return JsonResponse::create('Not found', '304'); + return auth()->user()->messagesRecv()->orderBy('id', 'desc')->paginate(15); + } + + public function page() + { + if(!auth()->check()) return redirect()->back()->with('warning', 'You are not logged in'); + return view('messages'); + } + + public function read(Request $request) + { + if(!auth()->check()) return Response::create('Unauthorized', '401'); + if($request->has('m_ids')) { + $ids = $request->get('m_ids'); + Message::whereTo(auth()->user()->id)->whereIn('id', $ids)->update(['read' => \Carbon\Carbon::now()]); + return 1; + } + } + + public function readall() + { + if(!auth()->check()) return Response::create('Unauthorized', '401'); + Message::whereTo(auth()->user()->id)->unread()->update(['read' => \Carbon\Carbon::now()]); + return 1; + } + + /** + * Show the form for creating a new resource. + * + * @return Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * @return Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param int $id + * @return Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param Request $request + * @param int $id + * @return Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return Response + */ + public function destroy($id) + { + // + } +} diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php new file mode 100644 index 0000000..52c22b7 --- /dev/null +++ b/app/Http/Controllers/ReportController.php @@ -0,0 +1,306 @@ +input('reportReasons'))) { + $reportReasons = "
  • ".implode("
  • ", $request->input('reportReasons')); + } else { + $reportReasons = "
  • ".$request->input('reportReasons')."
  • "; + } + + if($request->user()->username == "" || $request->user()->username == null) { + $username = "User is anonymous because he is not registered"; + } else { + $username = $request->user()->username; + } + + $data = array( + "videoURL" => $this->baseURL.$request->route('id'), + "reportReasons" => $reportReasons, + "reportText" => htmlspecialchars($request->input('reportText')), + "username" => $username, + "videoID" => $request->route('id'), + "message" => array( + "html" => 'html message', + "text" => 'text message', + "to" => array( + array("name" => 'admin@w0bm.com', "email" => 'admin@w0bm.com') + ), + "from_email" => 'otter@w0bm.com', + "from_name" => 'from w0bm', + "subject" => 'the subject', + "track_opens" => true, + "track_clicks" => true + ), + "async" => false, + "debugOutput" => print_r(get_class_methods($request), true).print_r($request->route()->parameters(), true) + ); + //$postString = json_encode($data); + + \Mail::send('emails.report', $data, function ($msg) { + $msg->from($this->fromMail, $this->fromName); + $msg->to($this->toMail, $this->toName); + $msg->subject($this->subject); + }); + + return redirect()->back()->with('success', 'Report successfully sent');; + } + + + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + /* + if(!$request->has('username')) return JsonResponse::create('Not found', '304'); + $user = User::whereUsername(urldecode($request->get('username')))->first(); + if(!$user) return JsonResponse::create('Not found', '304'); + return $user->comments()->orderBy('id', 'desc')->paginate(10); + */ + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request, $id) + { + /* + $user = auth()->check() ? auth()->user() : null; + $xhr = $request->ajax(); + + if(is_null($user)) return $xhr ? "Not logged in" : redirect()->back()->with('error', 'Not logged in'); + if(!$request->has('comment')) return $xhr ? "You need to enter a comment" : redirect()->back()->with('error', 'You need to enter a comment'); + if(mb_strlen(trim($request->get('comment'))) > 2000 ) return $xhr ? "Comment to long" : redirect()->back()->with('error', 'Comment to long'); + + $video = Video::findOrFail($id); + + $com = new Comment(); + $com->content = trim($request->get('comment')); + $com->user()->associate($user); + $com->video()->associate($video); + $com->save(); + + $sent = []; + foreach($com->getMentioned() as $mentioned) { + Message::send($user->id, $mentioned->id, $user->username . ' mentioned you in a comment', view('messages.commentmention', ['video' => $video, 'user' => $user, 'comment' => $com])); + $sent[] = $mentioned; + } + + foreach($com->answered() as $answered) { + if(array_search($answered, $sent) !== false) + continue; + Message::send($user->id, $answered->id, $user->username . ' answered on your comment', view('messages.commentanswer', ['video' => $video, 'user' => $user, 'comment' => $com])); + $sent[] = $answered; + } + + if($user->id != $video->user->id) + if(array_search($video->user, $sent) === false) + Message::send($user->id, $video->user->id, $user->username . ' commented on your video', view('messages.videocomment', ['video' => $video, 'user' => $user, 'comment' => $com])); + + return $xhr ? view('partials.comment', ['comment' => $com, 'mod' => $user->can('delete_comment')]) : redirect()->back()->with('success', 'Comment successfully saved'); + */ + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + /* + $comment = Comment::whereId($id)->first(); + if(!is_null($comment)) { + return JsonResponse::create(array( + 'error' => 'null', + 'comment' => Comment::whereId($id)->first()->content) + ); + } + return JsonResponse::create(array( + 'error' => 'comment_not_found' + )); + */ + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + /* + if(!($request->has('comment'))) + return JsonResponse::create(array('error' => 'invalid_request')); + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return JsonResponse::create(array('error' => 'not_logged_in')); + + if(!$user->can('edit_comment')) + return JsonResponse::create(array('error' => 'insufficient_permissions')); + + if(is_null($comment = Comment::whereId($id)->first())) + return JsonResponse::create(array('error' => 'comment_not_found')); + + $comment->content = trim($request->get('comment')); + $comment->save(); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'edit'; + $log->target_type = 'comment'; + $log->target_id = $id; + $log->save(); + */ + + return JsonResponse::create(array( + 'error' => 'null', + 'rendered_comment' => "test rendered comment"//Comment::simplemd($comment->content) + )); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy(Request $request, $id) + { + /* + if(!$request->has('reason')) + return 'invalid_request'; + + $reason = trim($request->get('reason')); + if($reason == '') + return 'invalid_request'; + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return 'not_logged_in'; + + if(!$user->can('delete_comment')) + return 'insufficient_permissions'; + + $comment = Comment::whereId($id)->first(); + if(is_null($comment)) + return 'comment_not_found'; + + $receiver = $comment->user; + $video = $comment->video; + Comment::destroy($id); + + if($user->id != $receiver->id) + Message::send(1, $receiver->id, 'A moderator deleted your comment', view('messages.moderation.commentdelete', ['video' => $video, 'comment' => $comment, 'reason' => $reason])); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'delete'; + $log->target_type = 'comment'; + $log->target_id = $id; + $log->reason = $reason; + $log->save(); + */ + + return 'success'; + } + + public function restore(Request $request, $id) + { + /* + if(!$request->has('reason')) + return 'invalid_request'; + + $reason = trim($request->get('reason')); + if($reason == '') + return 'invalid_request'; + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return 'not_logged_in'; + + if(!$user->can('delete_comment')) + return 'insufficient_permissions'; + + $comment = Comment::withTrashed()->whereId($id)->first(); + if(is_null($comment)) + return 'comment_not_found'; + + if(!$comment->trashed()) + return 'comment_not_deleted'; + + $receiver = $comment->user; + $video = $comment->video; + $comment->restore(); + + if($user->id != $receiver->id) + Message::send(1, $receiver->id, 'A moderator restored your comment', view('messages.moderation.commentrestore', ['video' => $video, 'comment' => $comment, 'reason' => $reason])); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'restore'; + $log->target_type = 'comment'; + $log->target_id = $id; + $log->reason = $reason; + $log->save(); + */ + + return 'success'; + } +} + diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php new file mode 100644 index 0000000..456198d --- /dev/null +++ b/app/Http/Controllers/UserController.php @@ -0,0 +1,401 @@ +has('identifier') && $request->has('password')) { + switch(\Auth::verify([ + 'identifier' => $request->get('identifier'), + 'password' => $request->get('password') + ], $request->has('remember'))) + { + case Verify::SUCCESS: + #\Session::put('background', auth()->user()->background); + return redirect("/")->with('success', 'Login successful'); + case Verify::INVALID_CREDENTIALS: + return redirect()->back()->with('error', 'Invalid credentials'); + case Verify::DISABLED: + $user = User::whereUsername($request->get('identifier')) + ->orWhere('email', $request->get('identifier')) + ->first(); + if($user->banend->eq(Carbon::createFromTimestampUTC(1))) { + return view('banned', ['user' => $user, 'perm' => true]); + } + // if ban expired unban and relogin. + if($user->banend->lt(Carbon::now())) { + $user->banend = null; + $user->disabled = 0; + $user->banreason = null; + $user->save(); + return $this->login($request); + } + return view('banned', ['user' => $user, 'perm' => false]); + case Verify::UNVERIFIED: + return redirect()->back()->with('error', 'Please verify your account'); + } + } + return redirect()->back()->with('error', 'Missing credentials'); + } + + public function logout() + { + if(!auth()->check()) return redirect()->back()->with('warning', 'You are not logged in'); + + auth()->logout(); + return redirect('/')->with('success', 'Logout successful'); + } + + /** + * Display a listing of the resource. + * + * @return \Response + */ + public function index() + { + // + } + + /** + * Add tags to filter + * + * @param Request $request + * @return Response + */ + public function filter(Request $request) { + //dd($request->get('categories')); + if(!auth()->check()) + return Response::create("Not logged in", 401); + if(!$request->has('filter')) + $filter = []; + else + $filter = explode(',', $request->get('filter')); + + + auth()->user()->categories = $filter; + auth()->user()->save(); + + if(!$request->ajax()) + return redirect()->back()->with('success', 'Filter settings saved'); + + + return Response::create(json_encode($filter)); + } + + /** + * Show the form for creating a new resource. + * + * @return \Response + */ + public function create() + { + if(auth()->check()) { + \Session::reflash(); + \Session::flash('info', 'Cannot register when logged in'); + return redirect('/'); + } + return view('register'); + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * @return \Response + */ + public function store(Request $request) + { + if(auth()->check()) return redirect()->back()->with('info', 'Cannot register when logged in'); + $validator = \Validator::make($request->all(), [ + 'username' => 'required|unique:users|min:3|max:25|alpha_num', + //'email' => 'required|email|unique:users|confirmed', + 'password' => 'required|min:6|confirmed', + 'g-recaptcha-response' => 'required|recaptcha' + ]); + + if($validator->fails()) { + return redirect()->back()->withErrors($validator->errors()) + ->withInput($request->except(['password', 'password_confirmation'])); + } + + //$activation_token = str_random(8) . md5($request->get('email')) . str_random(10); + + $user = new User(); + $user->username = $request->get('username'); + $user->email = ""; //$request->get('email'); + $user->password = $request->get('password'); + $user->activation_token = ""; //$activation_token; + $user->disabled = 0; + $user->verified = 1; + $user->categories = []; + if($user->save()) { + /*$data = [ + 'username' => $user->username, + 'activation_token' => $activation_token + ];*/ + + // Send Mail + + /*\Mail::queue('emails.activation', $data, function($message) use ($user) { + $message->to($user->email, $user->username)->subject('Welcome to w0bm. Activate your account'); + });*/ + + return redirect('/')->with('info', 'Congratulations! You can now login!'); + } else { + return redirect()->back()->with('error', 'Account could not be created')->withInput($request->except(['password', 'password_confirmation'])); + } + } + + public function activate($token) + { + $user = User::where('activation_token', '=', $token)->first(); + if(!$user) { + return redirect('/')->with('error', 'Account already activate or no account found'); + } + $user->verified = 1; + $user->activation_token = null; + $user->save(); + auth()->login($user); + return redirect('/')->with('success', 'Successfully activate and logged in.'); + } + + /** + * Display the specified resource. + * + * @param string $username + * @return \Response + */ + public function show($username) + { + $user = User::where('username', '=', $username)->first(); + + if(!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + $vids = $user->videos()->filtered()->paginate(50); + + return view('profile', ['title' => 'Uploads', 'user' => $user, 'videos' => $vids]); + } + + public function show_favs($username) + { + $user = UserFavorite::where('username', '=', $username)->first(); + + if (!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + $vids = $user->favs()->filtered()->orderBy('favorites.created_at')->paginate(50); + + return view('profile', ['title' => 'Favorites', 'user' => $user, 'videos' => $vids]); + } + + public function show_comments($username) + { + $user = User::where('username', '=', $username)->first(); + + if(!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + + return view('comments', ['user' => $user]); + } + + public function ban(Request $request, $username) + { + if(!($request->has('reason') && $request->has('duration'))) + return redirect()->back()->with('error', 'Invalid Request'); + + if(trim($reason = $request->get('reason')) == '') + return redirect()->back()->with('error', 'You need to specify a ban reason'); + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return redirect()->back()->with('error', 'Not logged in'); + + if(!$user->can('edit_user')) + return redirect()->back()->with('error', 'Insufficient permissions'); + + $perm = false; + if(($duration = $request->get('duration')) == '-1') { + $duration = Carbon::createFromTimestampUTC(1); + $perm = true; + } else { + preg_match('/^(\d+[yYaA])?\s*(\d+M)?\s*(\d+[wW])?\s*(\d+[dD])?\s*(\d+[Hh])?\s*(\d+[m])?\s*(\d+[sS])?$/m', $duration, $duration); + array_shift($duration); + $duration = array_map(function($elem) { + return intval(mb_substr($elem, 0, -1)); + }, $duration); + $duration = Carbon::now() + ->addYears($duration[0] ?? 0) + ->addMonths($duration[1] ?? 0) + ->addWeeks($duration[2] ?? 0) + ->addDays($duration[3] ?? 0) + ->addHours($duration[4] ?? 0) + ->addMinutes($duration[5] ?? 0) + ->addSeconds($duration[6] ?? 0); + } + + $userToBan = User::whereUsername($username)->first(); + if(is_null($user)) + return redirect()->back()->with('error', 'User not found'); + + $userToBan->disabled = 1; + $userToBan->banreason = $reason; + $userToBan->banend = $duration; + $userToBan->save(); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'ban'; + $log->target_type = 'user'; + $log->target_id = $userToBan->id; + $log->reason = $reason; + $log->save(); + + if($perm) + return redirect()->back()->with('success', 'User ' . $userToBan->username . ' has been permanently banned'); + else + return redirect()->back()->with('success', 'User ' . $userToBan->username . ' has been banned until ' . $userToBan->banend->format('d.m.Y H:i:s') . ' UTC'); + } + + /** + * Show the form for editing the specified resource. + * + * @param string $username + * @return \Response + */ + public function edit($username) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param Request $request + * @param int $id + * @return \Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Response + */ + public function destroy($id) + { + // + } + + public function random($username) { + $user = User::where('username', '=', $username)->first(); + + if (!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + + $id = $user->videos()->filtered()->countScoped()->count() - 1; + if ($id < 0) { + return redirect()->back()->with('error', 'User has no uploads (Check your filter settings)'); + } + $id = mt_rand(0, $id); + $vid = $user->videos()->filtered()->skip($id)->first()->id; + return redirect('/user/' . $username . '/uploads/' . $vid); + } + + public function play($username, $id) { + $user = User::where('username', '=', $username)->first(); + + if (!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + + $vid = $user->videos()->filtered()->find($id); + if (!$vid) { + return redirect()->back()->with('error', 'Video not found on user'); + } + + return view('video', [ + 'video' => $vid, + 'related' => $user, + 'banner' => Banner::getRandom($vid->isSfw()) + ]); + } + + // TODO: Cleanup. less Repetion between random and random_vav/play and play_fav + // Only difference are the redirect urls and the Base Model + public function random_fav($username) { + $user = UserFavorite::where('username', '=', $username)->first(); + + if (!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + $id = $user->videos()->filtered()->countScoped()->count() - 1; + if ($id < 0) { + return redirect()->back()->with('error', 'No favorites (Check your filter settings)'); + } + $id = mt_rand(0, $id); + $vid = $user->videos()->filtered()->skip($id)->first()->id; + return redirect('/user/' . $username . '/favs/' . $vid); + } + + public function play_fav($username, $id) { + $user = UserFavorite::where('username', '=', $username)->first(); + + if (!$user) { + return redirect()->back()->with('error', 'Unknown username'); + } + + $vid = $user->videos()->filtered()->find($id); + if (!$vid) { + return redirect()->back()->with('error', 'Video not found on user'); + } + + return view('video', [ + 'video' => $vid, + 'related' => $user, + 'banner' => Banner::getRandom($vid->isSfw()) + ]); + } + public function setLayout(Request $request) { + if(!auth()->check()) + return Response::create("unauthorized", 401); + if(!$request->has('layout')) + return Response::create("bad request", 400); + + $layout = $request->get('layout'); + if($layout !== strval(intval($layout))) + return Response::create("bad request", 400); + + if(!in_array("layout" . $layout, array_map(function ($v) { return basename($v); }, glob("../resources/views/layout*")))) + return Response::create("bad request", 400); + + auth()->user()->layout = $request->get('layout'); + auth()->user()->save(); + + return Response::create("success", 200); + } + +} diff --git a/app/Http/Controllers/VideoController.php b/app/Http/Controllers/VideoController.php new file mode 100644 index 0000000..cdb202a --- /dev/null +++ b/app/Http/Controllers/VideoController.php @@ -0,0 +1,331 @@ +has('q')){ + $needle = trim($request->input('q')); + return view('index', [ + 'videos' => Video::filtered()->withAnyTagsFuzzy($needle) + ->orderBy('id', 'asc') + ->paginate(20)->appends(['q' => $needle]), + 'categories' => Category::all(), + 'q' => $needle + ]); + } + return view('index', [ + 'videos' => Video::filtered()->orderBy('id', 'ASC')->paginate(20), + 'categories' => Category::all() + ]); + } + + /** + * Show the form for creating a new resource. + * + * @return Response + */ + public function create() + { + $user = auth()->check() ? auth()->user() : null; + return view('upload', ['user' => $user]); + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * @return Response + */ + public function store(Request $request) + { + /*var_dump($request->hasFile('file'));*/ if(!$request->hasFile('file') || !$request->has('category') || !$request->has('tags')) + return new JsonResponse(['error' => 'invalid_request']); + + $tags = $request->get('tags'); + if(mb_strpos($tags, 'sfw') === false && mb_strpos($tags, 'nsfw') === false) + return new JsonResponse(['error' => 'invalid_request']); + + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) + return new JsonResponse(['error' => 'not_logged_in']); + + if(!$user->can('break_upload_limit') && $user->videos()->newlyups()->count() >= 10) + return new JsonResponse(['error' => 'uploadlimit_reached']); + + $file = $request->file('file'); + + if(!$file->isValid() + || mb_strtolower($file->getClientOriginalExtension()) !== 'webm' + || mb_strtolower($file->getMimeType()) !== 'video/webm') + return new JsonResponse(['error' => 'invalid_file']); + + if(!$user->can('break_max_filesize') && $file->getSize() > 41943040) + return new JsonResponse(['error' => 'file_too_big']); + + if(($v = Video::withTrashed()->where('hash', '=', sha1_file($file->getRealPath()))->first()) !== null) { + if($v->trashed()) + return new JsonResponse(['error' => 'already_exists']); + return new JsonResponse([ + 'error' => 'already_exists', + 'video_id' => $v->id + ]); + } + // meh time() + $file = $file->move(public_path() . '/b/', 'w0bm_' . time() . '.webm'); + + $hash = sha1_file($file->getRealPath()); + + $video = new Video(); + $video->file = basename($file->getRealPath()); + if(!$video->checkFileEncoding()) { + unlink($file->getRealPath()); + // return before $video->save() so no need to clean up db + return new JsonResponse(['error' => 'erroneous_file_encoding']); + } + $video->videotitle = $request->get('videotitle', null); + $video->interpret = $request->get('interpret', null); + $video->songtitle = $request->get('songtitle', null); + $video->imgsource = $request->get('imgsource', null); + $video->user()->associate($user); + $video->category()->associate(Category::findOrFail($request->get('category'))); + $video->hash = $hash; + $video->save(); + + $video->tag($tags); + $video->tag($video->videotitle); + $video->tag($video->interpret); + $video->tag($video->songtitle); + $video->tag($video->imgsource); + $video->tag($video->category->shortname); + $video->tag($video->category->name); + + // TODO: outsource to different process (async) + $video->createThumbnail(); + + // Discord + if (config('discord.enabled') && config('discord.webhookurl')) { + $nsfw = in_array('nsfw', $video->getTagArrayNormalizedAttribute()); + $nsfw = $nsfw ? ' :exclamation: **NSFW** :exclamation:' : ''; + $message = config('discord.message'); + $message = str_replace( + ['', '', ''], + [$user->username, $video->id, $nsfw], + $message + ); + $url = config('discord.webhookurl'); + $payload = json_encode([ + 'content' => $message, + ]); + // exec with & so it is async + exec("curl -H \"Content-Type: application/json; charset=UTF-8\" -X POST -d '$payload' '$url' > /dev/null &"); + } + + return new JsonResponse([ + 'error' => 'null', + 'video_id' => $video->id + ]); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return Response + */ + public function show($id) { + // TODO: filter on direct id link?? + $video = Video::with('tags')->find($id); + if(is_null($video)) + return view('deleted'); + + #->back(); + #->with('error', 'No video with that ID found'); + + $sfw = $video->tags->contains(function($key, $tag) { + return $tag->normalized === 'sfw'; + }); + + return view('video', [ + 'video' => $video, + 'banner' => Banner::getRandom($sfw) + ]); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param Request $request + * @param int $id + * @return Response + */ + public function update(Request $request, $id) { + if(!auth()->check()) + return response('Not logged in', 403); + $user = auth()->user(); + + if(!$request->ajax()) + return response('Invalid request', 400); + + $v = Video::findOrFail($id); + + if(!$user->can('edit_video') && $user->id != $v->user_id) + return response('Not enough permissions', 403); + + if($request->has('interpret')) { + $v->interpret = $request->input('interpret'); + $v->tag($request->input('interpret')); + } + if($request->has('songtitle')) { + $v->songtitle = $request->input('songtitle'); + $v->tag($request->input('songtitle')); + } + if($request->has('imgsource')) { + $v->imgsource = $request->input('imgsource'); + $v->tag($request->input('imgsource')); + } + if($request->has('videotitle')) { + $v->videotitle = $request->input('videotitle'); + $v->tag($request->input('videotitle')); + } + if($request->has('category')) { + $cat = Category::findOrFail($request->input('category')); + $v->category()->associate($cat); + $v->tag($cat->name); + $v->tag($cat->shortname); + } + + $v->save(); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'edit'; + $log->target_type = 'video'; + $log->target_id = $v->id; + $log->save(); + + return $v; + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Response + */ + public function destroy(Request $request, $id) + { + $user = auth()->check() ? auth()->user() : null; + + if(is_null($user)) return new JsonResponse(['error' => 'not_logged_in']); + + if(!$request->has('reason') || trim($request->get('reason')) == '') return new JsonResponse(['error' => 'invalid_request']); + + $reason = trim($request->get('reason')); + + if($user->can('delete_video')) { + $warnings = []; + $vid = Video::find($id); + if(!$vid) + return new JsonResponse(['error' => 'video_not_found']); + + foreach($vid->comments as $comment) { + $comment->delete(); // delete associated comments + } + $vid->faved()->detach(); + if(!\File::move(public_path() . '/b/' . $vid->file, storage_path() . '/deleted/' . $vid->file)) + $warnings[] = 'Could not move file'; + + $vid->delete(); + $receiver = $vid->user; + if($user->id != $receiver->id) + Message::send(1, $receiver->id, 'A moderator deleted your video', view('messages.moderation.videodelete', ['video' => $vid, 'reason' => $reason, 'videoinfo' => ['artist' => $vid->interpret, 'songtitle' => $vid->songtitle, 'video_source' => $vid->imgsource, 'category' => $vid->category->name]])); + + $log = new ModeratorLog(); + $log->user()->associate($user); + $log->type = 'delete'; + $log->target_type = 'video'; + $log->target_id = $id; + $log->reason = $reason; + $log->save(); + + return new JsonResponse(['error' => 'null', 'warnings' => $warnings]); + } + return new JsonResponse(['error' => 'insufficient_permissions']); + } + + public function favorite($id) { + $user = auth()->check() ? auth()->user() : null; + $xhr = \Request::ajax(); + + if(is_null($user)) return $xhr ? "Not logged in" : redirect()->back()->with('error', 'Not logged in'); + + + if($user->hasFaved($id)) { + $user->favs()->detach($id); + return $xhr ? "Video removed from favorites" : redirect()->back()->with('success', 'Video removed from favorites'); + } else { + $user->favs()->attach($id); + return $xhr ? "Video added to favorites" : redirect()->back()->with('success', 'Video added to favorites'); + } + } + + /** + * @param Request $request + * @return Video | Bool + */ + public function tag(Request $request, $id) { + if(!$request->has('tags')) return new JsonResponse(["error" => "invalid_request"]); + $tags = $request->get('tags'); + if(!count($tags)) return new JsonResponse(["error" => "no_tags_specified"]); + $v = Video::findOrFail($id); + if(is_null($v)) return new JsonResponse(["error" => "video_not_found"]); + $v->tag($tags); + $v['error'] = 'null'; + $v['can_edit_video'] = auth()->check() ? auth()->user()->can('edit_video') : false; + return $v; + } + + public function untag(Request $request, $id) { + if(!$request->has('tag') || trim($request->get('tag')) == "") return new JsonResponse(["error" => "invalid_request"]); + $user = auth()->check() ? auth()->user() : null; + if(is_null($user)) return new JsonResponse(["error" => "not_logged_in"]); + if(!$user->can('edit_video')) return new JsonResponse(["error" => "insufficient_permissions"]); + $tag = trim($request->get('tag')); + $v = Video::findOrFail($id); + if(is_null($v)) return new JsonResponse(["error" => "video_not_found"]); + $v = $v->untag($tag); + $v['error'] = 'null'; + return $v; + } + +} diff --git a/app/Http/Controllers/tmp/.gitkeep b/app/Http/Controllers/tmp/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Http/Controllers/tmp/test.png b/app/Http/Controllers/tmp/test.png new file mode 100644 index 0000000..3e71d63 Binary files /dev/null and b/app/Http/Controllers/tmp/test.png differ diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..08ce03a --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,37 @@ + Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'guest' => Middleware\RedirectIfAuthenticated::class, + 'theme' => Middleware\Theme::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..3a951ed --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,46 @@ +auth = $auth; + } + + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + if ($this->auth->guest()) { + if ($request->ajax()) { + return response('Unauthorized.', 401); + } else { + return redirect()->guest('/login'); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..3aa15f8 --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +headers->get('content-type') == 'application/json' + && $request->has('callback')) + { + if (get_class($response) == JsonResponse::class) { + return $response->setCallback($request->input('callback')); + } + // TODO fix stripping headers + return response()->json($response->original)->setCallback($request->input('callback')); + } + + return $response; + } +} \ No newline at end of file diff --git a/app/Http/Middleware/LogoutBanned.php b/app/Http/Middleware/LogoutBanned.php new file mode 100644 index 0000000..103116a --- /dev/null +++ b/app/Http/Middleware/LogoutBanned.php @@ -0,0 +1,25 @@ +user(); + if($user && $user->isBanned()) { + auth()->logout(); + return redirect()->back()->with('error', 'You are banned'); + } + return $next($request); + } +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..466d644 --- /dev/null +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,42 @@ +auth = $auth; + } + + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + if ($this->auth->check()) { + return redirect('/'); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/Theme.php b/app/Http/Middleware/Theme.php new file mode 100644 index 0000000..0f91f96 --- /dev/null +++ b/app/Http/Middleware/Theme.php @@ -0,0 +1,32 @@ +auth = $auth; + $this->view = $view; + } + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + $paths = $this->view->getFinder()->getPaths(); + foreach ($paths as &$p) { + $p .= "/layout" . (auth()->check() ? auth()->user()->layout : 1); + } + $this->view->setFinder(new \Illuminate\View\FileViewFinder($this->view->getFinder()->getFilesystem(), $paths)); + return $next($request); + } +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..6834c59 --- /dev/null +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,18 @@ + 'home', function () { + Session::reflash(); + // Dummy query to calculate rows + $video = \App\Models\Video::getRandom()->first(); + + return redirect($video->id); + +}])->middleware('auth'); + + +Route::post('filter', 'UserController@filter'); + +// /api +Route::group(['prefix' => 'api'], function() { + + // /api/messages + Route::group(['prefix' => 'messages'], function() { + Route::get('', 'MessageController@index'); + Route::post('read', 'MessageController@read'); + Route::get('readall', 'MessageController@readall'); + }); + + // /api/comments + Route::group(['prefix' => 'comments'], function() { + Route::get('/', 'CommentController@index'); + Route::get('/{id}', 'CommentController@show')->where('id', '[0-9]+'); + Route::post('{id}/edit', 'CommentController@update')->where('id', '[0-9]+'); + Route::post('{id}/delete', 'CommentController@destroy')->where('id', '[0-9]+'); + Route::post('{id}/restore', 'CommentController@restore')->where('id', '[0-9]+'); + }); + + // /api/user + Route::group(['prefix' => 'user'], function() { + Route::post('{username}/ban', 'UserController@ban'); + Route::get('/layout', 'UserController@setLayout'); + }); + + // /api/video + Route::group(['prefix' => 'video'], function() { + Route::get('random', function() { + return \App\Models\Video::getRandom()->with(['category', 'user' => function($query) { + $query->addSelect('username', 'id'); + }])->first(); + }); + + + Route::get('latest', function(\Illuminate\Http\Request $req) { + if ($req->has('filtered') && $req->get('filtered')) { + return \App\Models\Video::filtered()->orderBy('id', 'DESC')->first(); + } + return \App\Models\Video::orderBy('id', 'DESC')->first(); + }); + + Route::get('{id}', function($id) { + $res = \App\Models\Video::with(['category', 'user' => function($query) { + $query->addSelect('username', 'id'); + }])->find($id); + if(!$res) { + return response(['message' => 'Video not found'], 404); + } + return $res; + })->where('id', '[0-9]+'); + Route::post('{id}/delete', 'VideoController@destroy')->where('id', '[0-9]+'); + Route::post('{id}/tag', 'VideoController@tag')->where('id', '[0-9]+'); + Route::post('{id}/untag', 'VideoController@untag')->where('id', '[0-9]+'); + Route::post('upload', 'VideoController@store')->middleware('auth.basic'); + }); + + Route::post('upload', 'VideoController@store'); +}); + +Route::group(["middleware" => "theme"], function() { + Route::post('report/{id}', 'ReportController@report'); // added by klee + Route::get('messages', 'MessageController@page'); + Route::get('user/{username}', 'UserController@show')->middleware('auth'); + Route::get('user/{username}/uploads', 'UserController@random')->middleware('auth'); + Route::get('user/{username}/uploads/{id}', 'UserController@play')->where('id', '[0-9]+')->middleware('auth'); + Route::get('user/{username}/favs', 'UserController@random_fav')->middleware('auth'); + Route::get('user/{username}/favs/{id}', 'UserController@play_fav')->where('id', '[0-9]+')->middleware('auth'); + Route::get('user/{username}/favs/index', 'UserController@show_favs')->middleware('auth'); + Route::get('user/{username}/comments', 'UserController@show_comments')->middleware('auth'); + Route::get('logout', 'UserController@logout'); + Route::post('login', 'UserController@login'); + Route::get('register', 'UserController@create'); + Route::post('register', 'UserController@store'); + Route::get('activate/{token}', 'UserController@activate'); + Route::get('index', 'VideoController@index')->middleware('auth'); + Route::post('index/{id}', 'VideoController@update')->middleware('auth'); + Route::get('upload', 'VideoController@create')->middleware('auth'); + Route::get('categories', 'CategoryController@index')->middleware('auth'); + Route::get('webm', function() { return view('webm'); }); + Route::get('about', function() { return view('about'); }); + Route::get('irc', function() { return view('irc'); }); + Route::get('rules', function() { return view('rules'); }); + Route::get('contact', function() { return view('contact'); }); + Route::get('privacy', function() { return view('privacy'); }); + Route::get('teamspeak', function() { return view('teamspeak'); }); + Route::get('news', function() { return view('news'); }); + Route::get('0x40', function() { return view('0x40'); }); + Route::get('stats', function() { + return view('stats', [ + 'user_count' => \App\Models\User::count(), + 'upload_count' => \App\Models\Video::count(), + 'comment_count' => \App\Models\Comment::count(), + //'fav_count' => \App\Models\UserFavorite::count(), + 'latest_video' => \App\Models\Video::getLastId(), + 'newest_user' => \App\Models\User::orderBy('id', 'DESC')->first()->username, + 'dirsize' => shell_exec("(du -sh " . public_path() . "/b | cut -f1)") + ]); + }); + Route::get('/latest', function () { + Session::reflash(); + + $video = \App\Models\Video::orderBy('id', 'DESC')->first(); + + return redirect($video->id); + }); + #Route::get('help', function() { return view('help'); }); + #Route::get('announcement', function() { return view('announcement'); }); + #Route::get('map', function() { return view('map'); }); + #Route::get('donate', function() { + # return view('donate', [ + # 'donations' => \App\Models\Donation::orderBy('timestamp', 'DESC')->get() + # ]); + #}); + Route::get('transparency', function() { return view('transparency'); }); + Route::get('login', function() { return view('login'); }); + #Route::get('counter-strike', function() { return view('counter-strike'); }); + + Route::get('{id}', 'VideoController@show')->where('id', '[0-9]+'); + Route::get('{id}/fav', 'VideoController@favorite')->where('id', '[0-9]+'); + Route::post('{id}', 'CommentController@store')->where('id', '[0-9]+'); + + Route::get('{shortname}', 'CategoryController@showVideo')->where('shortname', '[a-z][a-z0-9]+')->middleware('auth'); + Route::get('{shortname}/{id}', 'CategoryController@showVideo')->where(['shortname' => '[a-z][a-z0-9]+', 'id' => '[0-9]+'])->middleware('auth'); +}); diff --git a/app/Jobs/Job.php b/app/Jobs/Job.php new file mode 100644 index 0000000..55ece29 --- /dev/null +++ b/app/Jobs/Job.php @@ -0,0 +1,21 @@ + 'boolean' + ]; + protected $dates = [ + 'created_at', + 'updated_at', + 'until' + ]; + + // If this would be in relation with video the $sfw could be + // figured out dynamically + public static function getRandom($sfw = true) { + $q = static::active(); + if($sfw) $q->sfw(); + $id = $q->count() - 1; + if ($id < 0) return null; + $id = mt_rand(0, $id); + $q = static::active(); + if($sfw) $q->sfw(); + return $q->skip($id)->first(); + } + + public function scopeSfw($query) { + return $query->where('sfw', true); + } + + public function scopeActive($query) { + return $query->where('until', '>=', Carbon::now()); + } +} diff --git a/app/Models/Category.php b/app/Models/Category.php new file mode 100644 index 0000000..98382d8 --- /dev/null +++ b/app/Models/Category.php @@ -0,0 +1,49 @@ +hasMany(Video::class); + } + + public function users() { + return $this->belongsToMany(User::class); + } + + public function baseurl() { + return $this->shortname; + } + + public function displayName() { + return e($this->name); + } +} diff --git a/app/Models/Comment.php b/app/Models/Comment.php new file mode 100644 index 0000000..653dc85 --- /dev/null +++ b/app/Models/Comment.php @@ -0,0 +1,90 @@ +belongsTo(User::class); + } + + public function video() { + return $this->belongsTo(Video::class); + } + + public static function simplemd($text) { + $m = app()->make(Markdown::class); + $text = $m->text($text); + + return $text; + } + + public function getRenderedViewAttribute() { + return static::simplemd($this->content); + } + + public function getMentioned() { + $text = $this->content; + $nameMatcher = '/\B@([\wÄÖÜäöü]+)/i'; + $ret = []; + if(preg_match_all($nameMatcher, $text, $users) > 0) { + foreach ($users[1] as $user) { + if(User::whereUsername($user)->count() > 0) { + $ret[] = User::whereUsername($user)->first(); + } + } + } + + return array_unique($ret); + } + + public function answered() { + $text = $this->content; + $regex = '/^[!%*]*(\^+)/m'; + $answers = []; + if(preg_match_all($regex, $text, $answered) > 0) { + foreach($answered[1] as $a) { + $answers[] = mb_strlen($a); + } + } + $answers = array_unique($answers); + $comments = $this->video->comments; + $total = $comments->count(); + $ret = []; + foreach($answers as $c) { + $up = $total - $c - 1; + if($up >= 0) { + $ret[] = $comments->get($up)->user; + } + } + return $ret; + } +} diff --git a/app/Models/Donation.php b/app/Models/Donation.php new file mode 100644 index 0000000..a9f5816 --- /dev/null +++ b/app/Models/Donation.php @@ -0,0 +1,20 @@ +hasMany(Role::class); + } + + public function users() { + return $this->hasMany(User::class); + } + + public function toJson($options = 0) { + return parent::toJson($options); + } + + public function __toString() { + switch ($this->icon_type) { + case 'fa': + return ''; + case 'img': + case 'image': + return '' . $this->icon . ''; + default: + return ''; + } + } + +} diff --git a/app/Models/Message.php b/app/Models/Message.php new file mode 100644 index 0000000..3109552 --- /dev/null +++ b/app/Models/Message.php @@ -0,0 +1,72 @@ +belongsTo(User::class, 'from'); + } + + public function toUser() { + return $this->belongsTo(User::class, 'to'); + } + + public static function send($from, $to, $subject, $content) { + if(empty($subject)) return 'Subject must not be empty'; + if(empty($content)) return 'Content must not be empty'; + + try { + if(!is_object($from)) + $from = User::findOrFail($from); + + if(!is_object($to)) + $to = User::findOrFail($to); + } catch (ModelNotFoundException $e) { + return false; + } + + $message = new static(); + $message->from = $from->id; + $message->to = $to->id; + $message->subject = $subject; + $message->content = $content; + $message->save(); + + return $message; + } + + public function scopeUnread($query) { + return $query->whereNull('read'); + } +} \ No newline at end of file diff --git a/app/Models/ModeratorLog.php b/app/Models/ModeratorLog.php new file mode 100644 index 0000000..4bdf017 --- /dev/null +++ b/app/Models/ModeratorLog.php @@ -0,0 +1,42 @@ +belongsTo(User::class); + } + + public function getTarget() { + $target_type = $this->target_type; + + switch ($target_type) { + case 'user': return User::find($this->target_id); + case 'comment': return Comment::find($this->target_id); + case 'video': return Video::find($this->target_id); + default: return null; + } + } +} \ No newline at end of file diff --git a/app/Models/Role.php b/app/Models/Role.php new file mode 100644 index 0000000..93da4d4 --- /dev/null +++ b/app/Models/Role.php @@ -0,0 +1,12 @@ +belongsTo(Icon::class, 'icon_id'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..e43c679 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,135 @@ + 'array' + ]; + + protected $dates = [ + 'created_at', + 'updated_at', + 'deleted_at', + 'banend' + ]; + + + public function uploads() { + return $this->hasMany(Video::class); + } + + public function videos() { + return $this->uploads(); + } + + public function comments() { + return $this->hasMany(Comment::class); + } + + public function moderator_log() { + return $this->hasMany(ModeratorLog::class); + } + + public function messagesSent() { + return $this->hasMany(Message::class, 'from'); + } + + public function messagesRecv() { + return $this->hasMany(Message::class, 'to'); + } + + public function favs() { + return $this->belongsToMany(Video::class, 'favorites'); + } + + public function hasFaved($id) { + return ! $this->favs->filter(function($vid) use ($id) { + return $vid->id == $id; + })->isEmpty(); + } + + public function icon() { + return $this->belongsTo(Icon::class, 'icon_id'); + } + + public function activeIcon() { + $icon = $this->icon; + if($icon === null) { + $roles = $this->roles; + $roles = $roles->sortByDesc('level'); + + foreach($roles as $role) { + if($role !== null) $icon = $role->icon; + } + } + return $icon; + } + + public function isBanned() { + if($this->disabled == 1) { + return $this->banend->eq(Carbon::createFromTimeStampUTC(1)) || $this->banend->gt(Carbon::now()); + } + return false; + } + + public function getForeignKey() { + return 'user_id'; + } + + public function baseurl() { + return 'user/' . $this->username . '/uploads'; + } + + public function displayName() { + return e($this->username) . ($this->activeIcon() ? " " . $this->activeIcon() : ""); + } + +} diff --git a/app/Models/UserFavorite.php b/app/Models/UserFavorite.php new file mode 100644 index 0000000..7c0c66c --- /dev/null +++ b/app/Models/UserFavorite.php @@ -0,0 +1,21 @@ +favs(); + } + + public function baseurl() { + return 'user/' . $this->username . '/favs'; + } + + public function displayName() { + return 'Favorites (' . parent::displayName() . ')'; + } +} diff --git a/app/Models/Video.php b/app/Models/Video.php new file mode 100644 index 0000000..e83b2b1 --- /dev/null +++ b/app/Models/Video.php @@ -0,0 +1,189 @@ +belongsTo(User::class); + } + + public function category() { + return $this->belongsTo(Category::class); + } + + public function comments() { + return $this->hasMany(Comment::class); + } + + public function faved() { + return $this->belongsToMany(User::class, 'favorites', 'video_id', 'user_id'); + } + + public static function getFirstId($related = null) { + if ($related) { + return $related->videos()->filtered()->orderBy('id', 'ASC')->first()->id; + } + return static::filtered()->orderBy('id', 'ASC')->first()->id; + } + + public static function getLastId($related = null) { + if ($related) { + return $related->videos()->filtered()->orderBy('id', 'DESC')->first()->id; + } + return static::select('id')->filtered()->orderBy('id', 'DESC')->first()->id; + } + + public function getNext($related = null) { + if ($related) { + return $related->videos()->filtered()->where('id', '>', $this->id)->orderBy('id', 'ASC')->first(); + } else { + return static::filtered()->where('id', '>', $this->id)->orderBy('id', 'ASC')->first(); + } + } + + public function getPrev($related = null) { + if ($related) { + return $related->videos()->filtered()->where('id', '<', $this->id)->orderBy('id', 'DESC')->first(); + } else { + return static::filtered()->where('id', '<', $this->id)->orderBy('id', 'DESC')->first(); + } + } + + public function scopeNewlyups($query) { + return $query->where('created_at', '>=', Carbon::now()->subHours(12)); + } + + public function scopeFiltered($query) { + if(auth()->check()) { + // TODO rename to filtered + $filter = auth()->user()->categories; + if(empty($filter)) + return $query; + + return $query->withoutAnyTags($filter); + } else { + // TODO: filter if post has sfw & nsfw tags + //return $query->withAllTags('sfw'); + return $query->withoutAnyTags('nsfw'); + + } + } + + public function checkFileEncoding() { + $dat = $this->file; + $in = public_path() . "/b"; + $tmpdir = str_replace("public", "app/Http/Controllers/tmp", public_path()); + for($i = 0; $i < 2; $i++) { + $ret = shell_exec("ffmpeg -y -ss 0 -i {$in}/{$dat} -vframes 1 {$tmpdir}/test.png 2>&1"); + if(strpos($ret, "nothing was encoded") !== false) { + shell_exec("ffmpeg -i {$in}/{$dat} -map 0:0 -map 0:1 -c:v copy {$tmpdir}/{$dat}"); + unlink($in . "/" . $dat); + rename($tmpdir . "/" . $dat, $in . "/" . $dat); + } + else return true; + } + return false; + } + + /** + * Creates a .gif thumbnail to a given video file + * + * @param string $dat File of the video + */ + public function createThumbnail() { + $dat = $this->file; + $in = public_path() . "/b"; // webm-input + $out = public_path() . "/thumbs"; //thumb-output + $tmpdir = str_replace("public", "app/Http/Controllers/tmp", public_path()); + + $name = explode(".", $dat); + array_pop($name); + $name = join(".", $name); + if(!file_exists("{$out}/{$name}.gif")) { + $length = round(shell_exec("ffprobe -i {$in}/{$dat} -show_format -v quiet | sed -n 's/duration=//p'")); + for ($i = 1; $i < 10; $i++) { + $act = ($i * 10) * ($length / 100); + $ffmpeg = shell_exec("ffmpeg -ss {$act} -i {$in}/{$dat} -vf \"scale='if(gt(a,4/3),206,-1)':'if(gt(a,4/3),-1,116)'\" -vframes 1 {$tmpdir}/{$name}_{$i}.png 2>&1"); + } + $tmp = shell_exec("convert -delay 27 -loop 0 {$tmpdir}/{$name}_*.png {$out}/{$name}.gif 2>&1"); + if(@filesize("{$out}/{$name}.gif") < 2000) + @unlink("{$out}/{$name}.gif"); + array_map('unlink', glob("{$tmpdir}/{$name}*.png")); + } + } + + public static function getRandom($related = null) { + if ($related) { + $id = $related->videos()->filtered()->countScoped()->count() - 1; + if ($id < 0) { + return redirect()->back()->with('error', 'no videos found'); + } + $id = mt_rand(0, $id); + return $related->videos()->filtered()->skip($id); + } + $id = static::filtered()->countScoped()->count() - 1; + if ($id < 0) { + return redirect()->back()->with('error', 'no videos found'); + } + $id = mt_rand(0, $id); + return static::filtered()->skip($id); + } + + public function isSfw() { + return $this->tags->contains(function ($key, $tag) { + $tag->normalized === 'sfw'; + }); + } + + public function filesize() { + return filesize(getcwd() . "/b/" . $this->file); + } +} diff --git a/app/Policies/.gitkeep b/app/Policies/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..35471f6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,28 @@ + 'App\Policies\ModelPolicy', + ]; + + /** + * Register any application authentication / authorization services. + * + * @param \Illuminate\Contracts\Auth\Access\Gate $gate + * @return void + */ + public function boot(GateContract $gate) + { + parent::registerPolicies($gate); + + // + } +} diff --git a/app/Providers/BladeServiceProvider.php b/app/Providers/BladeServiceProvider.php new file mode 100644 index 0000000..661d4dd --- /dev/null +++ b/app/Providers/BladeServiceProvider.php @@ -0,0 +1,33 @@ +"; + }); + } + + /** + * Register the application services. + * + * @return void + */ + public function register() + { + // + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php new file mode 100644 index 0000000..58ce962 --- /dev/null +++ b/app/Providers/EventServiceProvider.php @@ -0,0 +1,33 @@ + [ + 'App\Listeners\EventListener', + ], + ]; + + /** + * Register any other events for your application. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + */ + public function boot(DispatcherContract $events) + { + parent::boot($events); + + // + } +} diff --git a/app/Providers/MarkdownServiceProvider.php b/app/Providers/MarkdownServiceProvider.php new file mode 100644 index 0000000..4120c39 --- /dev/null +++ b/app/Providers/MarkdownServiceProvider.php @@ -0,0 +1,31 @@ +app->singleton(Markdown::class, function ($app) { + return Markdown::instance(); + }); + } +} \ No newline at end of file diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..d50b1c0 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,44 @@ +group(['namespace' => $this->namespace], function ($router) { + require app_path('Http/routes.php'); + }); + } +} diff --git a/app/Services/Markdown.php b/app/Services/Markdown.php new file mode 100644 index 0000000..f12340a --- /dev/null +++ b/app/Services/Markdown.php @@ -0,0 +1,340 @@ +setMarkupEscaped(true); + $this->setBreaksEnabled(true); + $this->setUrlsLinked(true); + $this->InlineTypes['@'][] = 'UserMention'; + #$this->InlineTypes['%'][] = 'ColoredText'; + $this->InlineTypes['['][] = 'KrebsText'; + $this->InlineTypes['['][] = 'ReichText'; + $this->InlineTypes['['][] = 'RainbowText'; + $this->InlineTypes['['][] = 'SpoilerText'; + $this->InlineTypes[':'][] = 'emojimatcherpng'; + //$this->InlineTypes[':'][] = 'emojimatchermp4'; + $this->InlineTypes[':'][] = 'ClickableTimestamp'; + $this->inlineMarkerList .= '@'; + } + + protected function paragraph($Line) { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + 'attributes' => [ + 'class' => 'comment' + ] + ), + ); + + return $Block; + } + + // Matches the emojis in png format + protected function inlineemojimatcherpng($Excerpt) { + if (preg_match('/\:(\w+)\:/mUs', $Excerpt['text'], $matches)) { + $path = "images/comments/" . $matches[1]; + $file_ext = ""; + if(file_exists($path . ".png")) + $file_ext = ".png"; + else if(file_exists($path . ".gif")) + $file_ext = ".gif"; + if($file_ext === "") + return; + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'img', + 'handler' => 'line', + 'attributes' => [ + 'class' => 'comment_emoji', + 'src' => '//s.w0bm.com/images/comments/' . $matches[1] . $file_ext, + 'alt' => ':' . $matches[1] . ':', + 'title' => ':' . $matches[1] . ':' + ], + ] + ]; + } + } + + // Matches MP4 Emojis (Currently not possible due to Chromes shitty and malfunctioning autplay policy. Thanks idiots :*) + //protected function inlineemojimatchermp4($Excerpt) { + // if (preg_match('/\:(uwe)\:/mUs', $Excerpt['text'], $matches)) { + // return [ + // 'extent' => strlen($matches[0]), + // 'element' => [ + // 'name' => 'video', + // 'handler' => 'line', + // 'attributes' => [ + // 'loop' => 'true', + // 'autoplay' => 'true', + // 'muted' => '', + // 'class' => 'comment_video', + // 'src' => '/images/comments/' . $matches[1] . '.mp4' + // ], + // ] + // ]; + // } + //} + + protected function inlineUserMention($Excerpt) { + if (preg_match('/\B@([\wÄÖÜäöü]+)/i', $Excerpt['context'], $matches)) { + if(User::whereUsername($matches[1])->count() > 0) { + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'a', + 'text' => $matches[0], + 'attributes' => [ + 'href' => '/user/' . $matches[1], //link to username profile + 'class' => 'user-mention', //style class of url + ], + ], + ]; + } else { + return [ + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ]; + } + } + } + + // Matches [rb][/rb] + protected function inlineRainbowText($Excerpt) { + if (preg_match('/\[rb\](.+)\[\/rb]/mUs', $Excerpt['text'], $matches)) { + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'span', + 'handler' => 'line', + 'text' => $matches[1], + 'attributes' => [ + 'class' => 'rainbow' + ], + ] + ]; + } + } + + // Matches [spoiler][/spoiler] + protected function inlineSpoilerText($Excerpt) { + if (preg_match('/\[spoiler\](.+)\[\/spoiler]/mUs', $Excerpt['text'], $matches)) { + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'span', + 'handler' => 'line', + 'text' => $matches[1], + 'attributes' => [ + 'class' => 'spoiler' + ], + ] + ]; + } + } + + + // Matches [krebs][/krebs] + protected function inlineKrebsText($Excerpt) { + if (preg_match('/\[krebs\](.+)\[\/krebs]/mUs', $Excerpt['text'], $matches)) { + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'span', + 'handler' => 'line', + 'text' => $matches[1], + 'attributes' => [ + 'class' => 'anim' + ], + ] + ]; + } + } + + // Matches Reichtext + protected function inlineReichText($Excerpt) { + if (preg_match('/\[reich\](.+)\[\/reich]/mUs', $Excerpt['text'], $matches)) { + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'span', + 'handler' => 'line', + 'text' => $matches[1], + 'attributes' => [ + 'class' => 'reich' + ], + ] + ]; + } + } + + // Matches %text% <- literally wtf error + /*protected function inlineColoredText($Excerpt) { + if (preg_match('/%(.+)%/', $Excerpt['text'], $matches)) { + return [ + 'extent' => strlen($matches[0]), + 'element' => [ + 'name' => 'span', + 'text' => $matches[1], + 'attributes' => [ + 'class' => '' + ], + ] + ]; + } + }*/ + + //Greentext + protected function blockQuote($Excerpt) { + if (preg_match('/^>[ ]?(.*)/', $Excerpt['text'], $matches)) { + $Block = [ + 'element' => [ + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) ('>' . $matches[1]), + ], + ]; + return $Block; + } + + } + + protected function blockQuoteContinue($Excerpt, array $Block) { + if ($Excerpt['text'][0] === '>' && preg_match('/^>[ ]?(.*)/', $Excerpt['text'], $matches)) { + if (isset($Block['interrupted'])) { + $Block['element']['text'][] = ''; + unset($Block['interrupted']); + } + $Block['element']['text'][] = '>' . $matches[1]; + return $Block; + } + if (!isset($Block['interrupted'])) { + $Block['element']['text'][] = '>' . $Excerpt['text']; + return $Block; + } + } + + // Disable Lists + protected function blockList($Excerpt) { + return; + } + + protected function blockListContinue($Excerpt, array $block) { + return; + } + + // Disable headers + protected function blockHeader($Excerpt) { + return; + } + + protected function blockSetextHeader($Excerpt, array $block = null) { + return; + } + + protected function blockTable($Excerpt, array $block = null) { + return; + } + + // Disable markdown links + protected function inlineLink($Excerpt) { + return; + } + + // Disable markdown images + protected function inlineImage($Excerpt) { + return; + } + + // Differentiate between internal and external urls and images + protected function inlineUrl($Excerpt) { + $e = parent::inlineUrl($Excerpt); + if (is_null($e)) return; + if (static::isImage($e['element']['attributes']['href'])) { + $e['element']['name'] = 'img'; + $e['element']['attributes']['src'] = $e['element']['attributes']['href']; + $e['element']['attributes']['alt'] = 'Image'; + $e['element']['attributes']['class'] = 'comment_image'; + unset($e['element']['attributes']['href']); + unset($e['element']['text']); + return $e; + } + if (!static::isInternal($e['element']['attributes']['href'])) { + $e['element']['attributes']['target'] = '_blank'; + $e['element']['attributes']['rel'] = 'extern'; + } else { + $url = parse_url($e['element']['text']); + $text = $url['path']; + if (isset($url['query'])) { + $text .= '?' . $url['query']; + } + if (isset($url['fragment'])) { + $text .= '#' . $url['fragment']; + } + $e['element']['text'] = $text; + } + return $e; + } + + protected function inlineClickableTimestamp($Excerpt) { + if (preg_match('/(?<=\s|^)([0-5]?\d:[0-5]\d)(?=\s|$)/', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) { + return [ + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => [ + 'name' => 'a', + 'text' => $matches[0][0], + 'attributes' => [ + 'href' => '#', + 'class' => 'comment_clickable_timestamp' + ] + ] + ]; + } + } + + private static function isInternal($url) { + $host = parse_url($url, PHP_URL_HOST); + $currhost = $_SERVER['SERVER_NAME']; + if (0 === strpos($host, 'www')) { + $host = substr($host, 4); + } + if (0 === strpos($currhost, 'www')) { + $currhost = substr($currhost, 4); + } + return $host === $currhost; + } + + private static function isImage($url) { + $cfg = config('comments'); + $allowedHosters = $cfg['allowedHosters']; + $allowedExtensions = $cfg['allowedImageFileExtensions']; + $url = parse_url($url); + if (isset($url['path'])) { + $ext = pathinfo($url['path'], PATHINFO_EXTENSION); + if (in_array($ext, $allowedExtensions)) { + if (isset($url['scheme']) && $url['scheme'] === 'https') { + foreach($allowedHosters as $hoster) { + foreach($hoster as $regex) { + if(preg_match($regex, $url['host'])) { + return true; + } + } + } + return false; + } + } + } + return false; + } + + +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..df630d0 --- /dev/null +++ b/artisan @@ -0,0 +1,51 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running. We will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..f2801ad --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php new file mode 100644 index 0000000..3830137 --- /dev/null +++ b/bootstrap/autoload.php @@ -0,0 +1,34 @@ +=5.5.9", + "laravel/framework": "5.1.*", + "barryvdh/laravel-ide-helper": "^2.1", + "doctrine/dbal": "^2.5", + "toddish/verify": "^5.0", + "guzzlehttp/guzzle": "^6.1", + "laravelcollective/html": "^5.0", + "greggilbert/recaptcha": "^2.0", + "cviebrock/eloquent-taggable": "dev-master", + "itsgoingd/clockwork": "^1.14", + "erusev/parsedown": "^1.6", + "sentry/sentry-laravel": "^0.8.0" + }, + "require-dev": { + "fzaninotto/faker": "~1.4", + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "~4.0", + "phpspec/phpspec": "~2.1" + }, + "autoload": { + "classmap": [ + "database" + ], + "psr-4": { + "App\\": "app/" + } + }, + "autoload-dev": { + "classmap": [ + "tests/TestCase.php" + ] + }, + "scripts": { + "post-install-cmd": [ + "php artisan clear-compiled", + "php artisan optimize" + ], + "pre-update-cmd": [ + "php artisan clear-compiled" + ], + "post-update-cmd": [ + "php artisan optimize" + ], + "post-root-package-install": [ + "php -r \"copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "php artisan key:generate" + ] + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..64e2c87 --- /dev/null +++ b/composer.lock @@ -0,0 +1,4624 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "728bab6a86590dd1f02dfe2a520c7379", + "packages": [ + { + "name": "barryvdh/laravel-ide-helper", + "version": "v2.4.3", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "5c304db44fba8e9c4aa0c09739e59f7be7736fdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/5c304db44fba8e9c4aa0c09739e59f7be7736fdd", + "reference": "5c304db44fba8e9c4aa0c09739e59f7be7736fdd", + "shasum": "" + }, + "require": { + "barryvdh/reflection-docblock": "^2.0.4", + "illuminate/console": "^5.0,<5.7", + "illuminate/filesystem": "^5.0,<5.7", + "illuminate/support": "^5.0,<5.7", + "php": ">=5.4.0", + "symfony/class-loader": "^2.3|^3.0" + }, + "require-dev": { + "doctrine/dbal": "~2.3", + "illuminate/config": "^5.0,<5.7", + "illuminate/view": "^5.0,<5.7", + "phpunit/phpunit": "4.*", + "scrutinizer/ocular": "~1.1", + "squizlabs/php_codesniffer": "~2.3" + }, + "suggest": { + "doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\LaravelIdeHelper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", + "keywords": [ + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" + ], + "time": "2018-02-08T07:56:07+00:00" + }, + { + "name": "barryvdh/reflection-docblock", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "3dcbd98b5d9384a5357266efba8fd29884458e5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/3dcbd98b5d9384a5357266efba8fd29884458e5c", + "reference": "3dcbd98b5d9384a5357266efba8fd29884458e5c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0,<4.5" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Barryvdh": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2016-06-13T19:28:20+00:00" + }, + { + "name": "classpreloader/classpreloader", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/ClassPreloader/ClassPreloader.git", + "reference": "4729e438e0ada350f91148e7d4bb9809342575ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/4729e438e0ada350f91148e7d4bb9809342575ff", + "reference": "4729e438e0ada350f91148e7d4bb9809342575ff", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^1.0|^2.0|^3.0", + "php": ">=5.5.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "ClassPreloader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", + "keywords": [ + "autoload", + "class", + "preload" + ], + "time": "2017-12-10T11:40:39+00:00" + }, + { + "name": "cviebrock/eloquent-taggable", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/w0bm/eloquent-taggable.git", + "reference": "21cf02511ba3aa5029a8a67e6d39e13de998594f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/w0bm/eloquent-taggable/zipball/21cf02511ba3aa5029a8a67e6d39e13de998594f", + "reference": "21cf02511ba3aa5029a8a67e6d39e13de998594f", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "^1.11", + "mockery/mockery": "^0.9.4", + "orchestra/testbench": "3.1.*", + "phpunit/phpunit": "^4.0", + "scrutinizer/ocular": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cviebrock\\EloquentTaggable\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Cviebrock\\EloquentTaggable\\Test\\": "tests" + } + }, + "scripts": { + "test": [ + "parallel-lint . --exclude vendor", + "phpunit" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Colin Viebrock", + "email": "colin@viebrock.ca" + } + ], + "description": "Easy ability to tag your Eloquent models in Laravel 5.", + "homepage": "https://github.com/w0bm/eloquent-taggable", + "keywords": [ + "eloquent", + "laravel", + "tag", + "taggable", + "tagging" + ], + "support": { + "issues": "https://github.com/w0bm/eloquent-taggable/issues", + "source": "https://github.com/w0bm/eloquent-taggable" + }, + "time": "2017-08-24T09:21:03+00:00" + }, + { + "name": "danielstjules/stringy", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/danielstjules/Stringy.git", + "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/4749c205db47ee5b32e8d1adf6d9aff8db6caf3b", + "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Stringy\\": "src/" + }, + "files": [ + "src/Create.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel St. Jules", + "email": "danielst.jules@gmail.com", + "homepage": "http://www.danielstjules.com" + } + ], + "description": "A string manipulation library with multibyte support", + "homepage": "https://github.com/danielstjules/Stringy", + "keywords": [ + "UTF", + "helpers", + "manipulation", + "methods", + "multibyte", + "string", + "utf-8", + "utility", + "utils" + ], + "time": "2015-07-23T00:54:12+00:00" + }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", + "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "@stable" + }, + "type": "project", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "time": "2014-10-24T07:27:01+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06T07:11:42+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^5.7", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2017-08-25T07:02:50+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22T10:37:32+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2017-08-31T08:43:38+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.7.1", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.4.6", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "2.*||^3.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2017-11-19T13:38:54+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2018-01-09T20:05:19+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.6.4", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", + "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2017-11-14T20:44:03+00:00" + }, + { + "name": "greggilbert/recaptcha", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/greggilbert/recaptcha.git", + "reference": "298cbc072e8ba734df2b8af798f848dacd27a4c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/greggilbert/recaptcha/zipball/298cbc072e8ba734df2b8af798f848dacd27a4c9", + "reference": "298cbc072e8ba734df2b8af798f848dacd27a4c9", + "shasum": "" + }, + "require": { + "illuminate/support": "~5.1", + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/migrations" + ], + "psr-4": { + "Greggilbert\\Recaptcha\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Gilbert", + "email": "greg@greg-gilbert.com" + } + ], + "description": "reCAPTCHA Validator for Laravel 5", + "homepage": "http://github.com/greggilbert/recaptcha", + "keywords": [ + "captcha", + "laravel", + "laravel5", + "recaptcha" + ], + "time": "2017-04-06T17:10:49+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0 || ^5.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2017-06-22T18:50:49+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, + { + "name": "itsgoingd/clockwork", + "version": "v1.14.5", + "source": { + "type": "git", + "url": "https://github.com/itsgoingd/clockwork.git", + "reference": "55ec557cc8cc60944de0eefbe27f905d538a8f70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/55ec557cc8cc60944de0eefbe27f905d538a8f70", + "reference": "55ec557cc8cc60944de0eefbe27f905d538a8f70", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "1.*" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Clockwork\\Support\\Laravel\\ClockworkServiceProvider" + ], + "aliases": { + "Clockwork": "Clockwork\\Support\\Laravel\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Clockwork\\": "Clockwork/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "itsgoingd", + "email": "itsgoingd@luzer.sk", + "homepage": "http://twitter.com/itsgoingd" + } + ], + "description": "Server-side component of Clockwork, a Chrome extension for PHP development", + "homepage": "http://github.com/itsgoingd/clockwork", + "keywords": [ + "debugging", + "laravel", + "logging", + "profiling" + ], + "time": "2017-09-15T14:50:14+00:00" + }, + { + "name": "jakub-onderka/php-console-color", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", + "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "0.*", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "3.7.*", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "JakubOnderka\\PhpConsoleColor": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com", + "homepage": "http://www.acci.cz" + } + ], + "time": "2014-04-08T15:00:19+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "shasum": "" + }, + "require": { + "jakub-onderka/php-console-color": "~0.1", + "php": ">=5.3.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~0.5", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JakubOnderka\\PhpConsoleHighlighter": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "time": "2015-04-20T18:58:01+00:00" + }, + { + "name": "jeremeamia/SuperClosure", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/jeremeamia/super_closure.git", + "reference": "443c3df3207f176a1b41576ee2a66968a507b3db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/443c3df3207f176a1b41576ee2a66968a507b3db", + "reference": "443c3df3207f176a1b41576ee2a66968a507b3db", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^1.2|^2.0|^3.0", + "php": ">=5.4", + "symfony/polyfill-php56": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "SuperClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia", + "role": "Developer" + } + ], + "description": "Serialize Closure objects, including their context and binding", + "homepage": "https://github.com/jeremeamia/super_closure", + "keywords": [ + "closure", + "function", + "lambda", + "parser", + "serializable", + "serialize", + "tokenizer" + ], + "time": "2016-12-07T09:37:55+00:00" + }, + { + "name": "laravel/framework", + "version": "v5.1.46", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "7f2f892e62163138121e8210b92b21394fda8d1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/7f2f892e62163138121e8210b92b21394fda8d1c", + "reference": "7f2f892e62163138121e8210b92b21394fda8d1c", + "shasum": "" + }, + "require": { + "classpreloader/classpreloader": "~2.0|~3.0", + "danielstjules/stringy": "~1.8", + "doctrine/inflector": "~1.0", + "ext-mbstring": "*", + "ext-openssl": "*", + "jeremeamia/superclosure": "~2.0", + "league/flysystem": "~1.0", + "monolog/monolog": "~1.11", + "mtdowling/cron-expression": "~1.0", + "nesbot/carbon": "~1.19", + "paragonie/random_compat": "~1.4", + "php": ">=5.5.9", + "psy/psysh": "0.7.*", + "swiftmailer/swiftmailer": "~5.1", + "symfony/console": "2.7.*", + "symfony/css-selector": "2.7.*|2.8.*", + "symfony/debug": "2.7.*", + "symfony/dom-crawler": "2.7.*", + "symfony/finder": "2.7.*", + "symfony/http-foundation": "2.7.*", + "symfony/http-kernel": "2.7.*", + "symfony/process": "2.7.*", + "symfony/routing": "2.7.*", + "symfony/translation": "2.7.*", + "symfony/var-dumper": "2.7.*", + "vlucas/phpdotenv": "~1.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/exception": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/mail": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "~3.0", + "iron-io/iron_mq": "~2.0", + "mockery/mockery": "~0.9.4", + "pda/pheanstalk": "~3.0", + "phpunit/phpunit": "~4.0", + "predis/predis": "~1.0" + }, + "suggest": { + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).", + "iron-io/iron_mq": "Required to use the iron queue driver (~2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", + "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/Illuminate/Queue/IlluminateQueueClosure.php" + ], + "files": [ + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "http://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "time": "2017-03-24T16:31:45+00:00" + }, + { + "name": "laravelcollective/html", + "version": "v5.1.10", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "f620ae4b9c932ec4e603931c3ff066860ffdcace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/f620ae4b9c932ec4e603931c3ff066860ffdcace", + "reference": "f620ae4b9c932ec4e603931c3ff066860ffdcace", + "shasum": "" + }, + "require": { + "illuminate/http": "5.1.*", + "illuminate/routing": "5.1.*", + "illuminate/session": "5.1.*", + "illuminate/support": "5.1.*", + "php": ">=5.5.9" + }, + "require-dev": { + "mockery/mockery": "~0.9", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Collective\\Html\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + }, + { + "name": "Adam Engebretson", + "email": "adam@laravelcollective.com" + } + ], + "time": "2017-05-20T17:43:22+00:00" + }, + { + "name": "league/flysystem", + "version": "1.0.42", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "09eabc54e199950041aef258a85847676496fe8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/09eabc54e199950041aef258a85847676496fe8e", + "reference": "09eabc54e199950041aef258a85847676496fe8e", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "ext-fileinfo": "*", + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "time": "2018-01-27T16:03:56+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2017-06-19T01:22:40+00:00" + }, + { + "name": "mtdowling/cron-expression", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2017-01-23T04:29:33+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.22.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", + "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "symfony/translation": "~2.6 || ~3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "~4.0 || ~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.23-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "time": "2017-01-16T07:55:07+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0", + "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2016-09-16T12:04:44+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v1.4.2", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/965cdeb01fdcab7653253aa81d40441d261f1e66", + "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2017-03-13T16:22:52+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280", + "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280", + "shasum": "" + }, + "require": { + "dnoegel/php-xdg-base-dir": "0.1", + "jakub-onderka/php-console-highlighter": "0.3.*", + "nikic/php-parser": "^1.2.1|~2.0", + "php": ">=5.3.9", + "symfony/console": "~2.3.10|^2.4.2|~3.0", + "symfony/var-dumper": "~2.7|~3.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "~1.5", + "phpunit/phpunit": "~3.7|~4.0|~5.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/finder": "~2.1|~3.0" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/Psy/functions.php" + ], + "psr-4": { + "Psy\\": "src/Psy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "time": "2016-03-09T05:03:14+00:00" + }, + { + "name": "sentry/sentry", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-php.git", + "reference": "512661046e403dc5eb5ae192d5a6cda10e068a95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/512661046e403dc5eb5ae192d5a6cda10e068a95", + "reference": "512661046e403dc5eb5ae192d5a6cda10e068a95", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": "^5.3|^7.0" + }, + "conflict": { + "raven/raven": "*" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.8.0", + "monolog/monolog": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "suggest": { + "ext-hash": "*", + "ext-json": "*", + "ext-mbstring": "*", + "monolog/monolog": "Automatically capture Monolog events as breadcrumbs" + }, + "bin": [ + "bin/sentry" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9.x-dev" + } + }, + "autoload": { + "psr-0": { + "Raven_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "David Cramer", + "email": "dcramer@gmail.com" + } + ], + "description": "A PHP client for Sentry (http://getsentry.com)", + "homepage": "http://getsentry.com", + "keywords": [ + "log", + "logging" + ], + "time": "2018-02-07T11:26:52+00:00" + }, + { + "name": "sentry/sentry-laravel", + "version": "0.8.0", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-laravel.git", + "reference": "4ca94ed3ba6d79ad049957be574a738a3478f94c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/4ca94ed3ba6d79ad049957be574a738a3478f94c", + "reference": "4ca94ed3ba6d79ad049957be574a738a3478f94c", + "shasum": "" + }, + "require": { + "illuminate/support": "4.*|5.*", + "php": ">=5.3.0", + "sentry/sentry": ">=1.7.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.8.0", + "orchestra/testbench": "3.*", + "phpunit/phpunit": "^4.6.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.8.x-dev" + }, + "laravel": { + "providers": [ + "Sentry\\SentryLaravel\\SentryLaravelServiceProvider" + ], + "aliases": { + "Sentry": "Sentry\\SentryLaravel\\SentryFacade" + } + } + }, + "autoload": { + "psr-0": { + "Sentry\\SentryLaravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "David Cramer", + "email": "dcramer@gmail.com" + } + ], + "description": "Laravel integration for Sentry (https://sentry.io)", + "homepage": "https://sentry.io", + "keywords": [ + "errors", + "laravel", + "logging", + "sentry" + ], + "time": "2017-08-11T17:29:14+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2018-01-23T07:37:21+00:00" + }, + { + "name": "symfony/class-loader", + "version": "v3.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/class-loader.git", + "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/e63c12699822bb3b667e7216ba07fbcc3a3e203e", + "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "require-dev": { + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/polyfill-apcu": "~1.1" + }, + "suggest": { + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ClassLoader\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony ClassLoader Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:37:34+00:00" + }, + { + "name": "symfony/console", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "a39062a5a1e98a1f1e392e4253a6b3b0ebdece18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/a39062a5a1e98a1f1e392e4253a6b3b0ebdece18", + "reference": "a39062a5a1e98a1f1e392e4253a6b3b0ebdece18", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/debug": "^2.7.2" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/process": "~2.1" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-01-26T15:25:25+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v2.8.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "c5b39674eacd34adedbef78227c57109caa9e318" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c5b39674eacd34adedbef78227c57109caa9e318", + "reference": "c5b39674eacd34adedbef78227c57109caa9e318", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:36:31+00:00" + }, + { + "name": "symfony/debug", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "bc9e38887a540abd287ff43c1a334f8e3f7aebea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/bc9e38887a540abd287ff43c1a334f8e3f7aebea", + "reference": "bc9e38887a540abd287ff43c1a334f8e3f7aebea", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.2", + "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2018-01-18T22:01:50+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "2855b6b05c1e163f9d7bd97c8137c9ad6e8223d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2855b6b05c1e163f9d7bd97c8137c9ad6e8223d8", + "reference": "2855b6b05c1e163f9d7bd97c8137c9ad6e8223d8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/css-selector": "~2.3" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:23:28+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d64be24fc1eba62f9daace8a8918f797fc8e87cc", + "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:36:31+00:00" + }, + { + "name": "symfony/finder", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "75f766f4a1c60407ec371cd2a7ef0a09d0e8e745" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/75f766f4a1c60407ec371cd2a7ef0a09d0e8e745", + "reference": "75f766f4a1c60407ec371cd2a7ef0a09d0e8e745", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-01-24T17:56:32+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "38383ce661cc260dfcd0e4b0b588f3dfa5572fb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/38383ce661cc260dfcd0e4b0b588f3dfa5572fb0", + "reference": "38383ce661cc260dfcd0e4b0b588f3dfa5572fb0", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "symfony/expression-language": "~2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-01-29T09:18:42+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "6b1759b40031e7f82cf3231c0be43785699e6706" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6b1759b40031e7f82cf3231c0be43785699e6706", + "reference": "6b1759b40031e7f82cf3231c0be43785699e6706", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/debug": "^2.6.2", + "symfony/event-dispatcher": "^2.6.7", + "symfony/http-foundation": "~2.7.36|^2.8.29" + }, + "conflict": { + "symfony/config": "<2.7", + "twig/twig": "<1.34|<2.4,>=2" + }, + "require-dev": { + "symfony/browser-kit": "~2.3", + "symfony/class-loader": "~2.1", + "symfony/config": "~2.7", + "symfony/console": "~2.3", + "symfony/css-selector": "^2.0.5", + "symfony/dependency-injection": "~2.2", + "symfony/dom-crawler": "^2.0.5", + "symfony/expression-language": "~2.4", + "symfony/finder": "^2.0.5", + "symfony/process": "^2.0.5", + "symfony/routing": "~2.2", + "symfony/stopwatch": "~2.3", + "symfony/templating": "~2.2", + "symfony/translation": "^2.0.5", + "symfony/var-dumper": "~2.6" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2018-01-29T10:08:39+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-01-30T19:27:44+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-01-30T19:27:44+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "e17c808ec4228026d4f5a8832afa19be85979563" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", + "reference": "e17c808ec4228026d4f5a8832afa19be85979563", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2018-01-31T18:08:44+00:00" + }, + { + "name": "symfony/process", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "9f3ba7d13b39d3808ce46715da5350b98368b9de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/9f3ba7d13b39d3808ce46715da5350b98368b9de", + "reference": "9f3ba7d13b39d3808ce46715da5350b98368b9de", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2018-01-21T19:40:00+00:00" + }, + { + "name": "symfony/routing", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "f9e62983a64343f9845ab4a15656cf1e1719809a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/f9e62983a64343f9845ab4a15656cf1e1719809a", + "reference": "f9e62983a64343f9845ab4a15656cf1e1719809a", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "~2.7", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.3", + "symfony/yaml": "^2.0.5" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2018-01-16T16:51:05+00:00" + }, + { + "name": "symfony/translation", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "bf521bfd1ba3f532810a1b3e2a81e8bfa15dce47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/bf521bfd1ba3f532810a1b3e2a81e8bfa15dce47", + "reference": "bf521bfd1ba3f532810a1b3e2a81e8bfa15dce47", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.7", + "symfony/intl": "~2.7.25|^2.8.18", + "symfony/yaml": "~2.2" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2018-01-17T08:38:26+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v2.7.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "06d81d8e70ed74e8c04a3055b0471353dc813737" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/06d81d8e70ed74e8c04a3055b0471353dc813737", + "reference": "06d81d8e70ed74e8c04a3055b0471353dc813737", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "suggest": { + "ext-symfony_debug": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "time": "2018-01-22T01:54:24+00:00" + }, + { + "name": "toddish/verify", + "version": "v5.0.0", + "source": { + "type": "git", + "url": "https://github.com/Toddish/Verify-L4.git", + "reference": "e8320942fa378ac673a79f321eb0c262de868893" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Toddish/Verify-L4/zipball/e8320942fa378ac673a79f321eb0c262de868893", + "reference": "e8320942fa378ac673a79f321eb0c262de868893", + "shasum": "" + }, + "require": { + "illuminate/support": "5.1.*", + "php": ">=5.5.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "Toddish\\Verify\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Todd Francis", + "email": "todd@toddish.co.uk", + "homepage": "http://toddish.co.uk", + "role": "Developer" + } + ], + "description": "A simple authentication bundle for Laravel 4/5. It features roles, permissions, password salting and is fully extendable.", + "homepage": "http://docs.toddish.co.uk/verify-l4/", + "keywords": [ + "auth", + "laravel", + "permissions", + "roles", + "verify" + ], + "time": "2015-07-07T19:23:59+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa", + "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Dotenv": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "homepage": "http://github.com/vlucas/phpdotenv", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2015-05-30T15:59:26+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d3ed4cc37051c1ca52d22d76b437d14809fc7e0d", + "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.0 || ^5.0", + "squizlabs/php_codesniffer": "^1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2017-08-15T16:48:10+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "hamcrest" + ], + "files": [ + "hamcrest/Hamcrest.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2015-05-11T14:41:42+00:00" + }, + { + "name": "mockery/mockery", + "version": "0.9.9", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "6fdb61243844dc924071d3404bb23994ea0b6856" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856", + "reference": "6fdb61243844dc924071d3404bb23994ea0b6856", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "~1.1", + "lib-pcre": ">=7.0", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", + "homepage": "http://github.com/padraic/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "time": "2017-02-28T12:52:32+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/php-diff", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/phpspec/php-diff.git", + "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a", + "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Diff": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Chris Boulton", + "homepage": "http://github.com/chrisboulton" + } + ], + "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", + "time": "2013-11-01T13:02:21+00:00" + }, + { + "name": "phpspec/phpspec", + "version": "2.5.8", + "source": { + "type": "git", + "url": "https://github.com/phpspec/phpspec.git", + "reference": "d8a153dcb52f929b448c0bf2cc19c7388951adb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/d8a153dcb52f929b448c0bf2cc19c7388951adb1", + "reference": "d8a153dcb52f929b448c0bf2cc19c7388951adb1", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.1", + "ext-tokenizer": "*", + "php": ">=5.3.3", + "phpspec/php-diff": "~1.0.0", + "phpspec/prophecy": "~1.4", + "sebastian/exporter": "~1.0|~2.0|^3.0", + "symfony/console": "~2.3|~3.0,!=3.2.8", + "symfony/event-dispatcher": "~2.1|~3.0", + "symfony/finder": "~2.1|~3.0", + "symfony/process": "^2.6|~3.0", + "symfony/yaml": "~2.1|~3.0" + }, + "require-dev": { + "behat/behat": "^3.0.11,!=3.3.1", + "ciaranmcnulty/versionbasedtestskipper": "^0.2.1", + "phpunit/phpunit": "~4.4", + "symfony/filesystem": "~2.1|~3.0" + }, + "suggest": { + "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" + }, + "bin": [ + "bin/phpspec" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "PhpSpec": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "homepage": "http://marcelloduarte.net/" + } + ], + "description": "Specification-oriented BDD framework for PHP 5.3+", + "homepage": "http://phpspec.net/", + "keywords": [ + "BDD", + "SpecBDD", + "TDD", + "spec", + "specification", + "testing", + "tests" + ], + "time": "2017-07-29T17:19:38+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.7.5", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-02-19T10:16:54+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06T15:47:00+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-12-04T08:55:13+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.36", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.2.2", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-06-21T08:07:12+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-10-02T06:51:40+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-05-22T07:24:03+00:00" + }, + { + "name": "sebastian/environment", + "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-08-18T05:49:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17T09:04:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-10-03T07:41:43+00:00" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21T13:59:46+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.3.16", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "af615970e265543a26ee712c958404eb9b7ac93d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/af615970e265543a26ee712c958404eb9b7ac93d", + "reference": "af615970e265543a26ee712c958404eb9b7ac93d", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-01-20T15:04:53+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-01-29T19:49:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "cviebrock/eloquent-taggable": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.5.9" + }, + "platform-dev": [] +} diff --git a/composer.phar b/composer.phar new file mode 100755 index 0000000..425591c Binary files /dev/null and b/composer.phar differ diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..c02e253 --- /dev/null +++ b/config/app.php @@ -0,0 +1,215 @@ + env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => 'http://localhost', + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + //'timezone' => 'UTC', + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY', 'SomeRandomStringWith32Characters'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Logging Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure the log settings for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Settings: "single", "daily", "syslog", "errorlog" + | + */ + + 'log' => 'single', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Foundation\Providers\ArtisanServiceProvider::class, + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Routing\ControllerServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + App\Providers\MarkdownServiceProvider::class, + //App\Providers\ViewServiceProvider::class, + + Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, + Toddish\Verify\Providers\VerifyServiceProvider::class, + Collective\Html\HtmlServiceProvider::class, + App\Providers\BladeServiceProvider::class, + Greggilbert\Recaptcha\RecaptchaServiceProvider::class, + Cviebrock\EloquentTaggable\ServiceProvider::class, + Clockwork\Support\Laravel\ClockworkServiceProvider::class, + Sentry\SentryLaravel\SentryLaravelServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'HumanReadable' => App\Helpers\HumanReadable::class, + 'Input' => Illuminate\Support\Facades\Input::class, + 'Inspiring' => Illuminate\Foundation\Inspiring::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + 'Form' => Collective\Html\FormFacade::class, + 'Html' => Collective\Html\HtmlFacade::class, + 'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class, + 'Sentry' => Sentry\SentryLaravel\SentryFacade::class, + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..a610b3c --- /dev/null +++ b/config/auth.php @@ -0,0 +1,67 @@ + 'verify', + + /* + |-------------------------------------------------------------------------- + | Authentication Model + |-------------------------------------------------------------------------- + | + | When using the "Eloquent" authentication driver, we need to know which + | Eloquent model should be used to retrieve your users. Of course, it + | is often just the "User" model but you may use whatever you like. + | + */ + + 'model' => App\Models\User::class, + + /* + |-------------------------------------------------------------------------- + | Authentication Table + |-------------------------------------------------------------------------- + | + | When using the "Database" authentication driver, we need to know which + | table should be used to retrieve your users. We have chosen a basic + | default value but you may easily change it to any table you like. + | + */ + + 'table' => 'users', + + /* + |-------------------------------------------------------------------------- + | Password Reset Settings + |-------------------------------------------------------------------------- + | + | Here you may set the options for resetting passwords including the view + | that is your password reset e-mail. You can also set the name of the + | table that maintains all of the reset tokens for your application. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'password' => [ + 'email' => 'emails.password', + 'table' => 'password_resets', + 'expire' => 60, + ], + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..36f9b3c --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,49 @@ + env('BROADCAST_DRIVER', 'pusher'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_KEY'), + 'secret' => env('PUSHER_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..379135b --- /dev/null +++ b/config/cache.php @@ -0,0 +1,79 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'servers' => [ + [ + 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => 'laravel', + +]; diff --git a/config/comments.php b/config/comments.php new file mode 100644 index 0000000..521b5ea --- /dev/null +++ b/config/comments.php @@ -0,0 +1,39 @@ + [ + 'img.w0bm.com' => [ + '/^img\.w0bm\.com$/' + ], + 'imgur.com' => [ + '/^i\.imgur\.com$/' + ], + 'giphy.com' => [ + '/^media[0-6]?\.giphy\.com$/' + ], + 'f0ck.me' => [ + '/^f0ck\.me$/' + ], + 'tumblr.com' => [ + '/^(?:68|66|78)\.media\.tumblr\.com$/' + ], + 'catbox.moe' => [ + '/^files\.catbox\.moe$/' + ], + 'pr0gramm.com' => [ + '/^img\.pr0gramm\.com$/' + ], + '' => [ + '/^files\.nogf\.club$/', + '/^f0ck\.space$/', + '/^nogf\.club$/', + '/^f0ck\.it$/' + ] + ], + 'allowedImageFileExtensions' => [ + 'jpg', + 'png', + 'gif', + ] +]; + diff --git a/config/compile.php b/config/compile.php new file mode 100644 index 0000000..04807ea --- /dev/null +++ b/config/compile.php @@ -0,0 +1,35 @@ + [ + // + ], + + /* + |-------------------------------------------------------------------------- + | Compiled File Providers + |-------------------------------------------------------------------------- + | + | Here you may list service providers which define a "compiles" function + | that returns additional files that should be compiled, providing an + | easy way to get common files from any packages you are utilizing. + | + */ + + 'providers' => [ + // + ], + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..f609ebd --- /dev/null +++ b/config/database.php @@ -0,0 +1,126 @@ + PDO::FETCH_CLASS, + + /* + |-------------------------------------------------------------------------- + | Default Database Connection Name + |-------------------------------------------------------------------------- + | + | Here you may specify which of the database connections below you wish + | to use as your default connection for all database work. Of course + | you may use many connections at once using the Database library. + | + */ + + 'default' => env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'database' => storage_path('database.sqlite'), + 'prefix' => '', + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'host' => env('DB_HOST', 'localhost'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'collation' => 'utf8_unicode_ci', + 'prefix' => '', + 'strict' => true, + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'host' => env('DB_HOST', 'localhost'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'schema' => 'public', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'host' => env('DB_HOST', 'localhost'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer set of commands than a typical key-value systems + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'cluster' => false, + + 'default' => [ + 'host' => '127.0.0.1', + 'port' => 6379, + 'database' => 0, + ], + + ], + +]; diff --git a/config/discord.php b/config/discord.php new file mode 100644 index 0000000..ab104a7 --- /dev/null +++ b/config/discord.php @@ -0,0 +1,6 @@ + true, + 'webhookurl' => env('DISCORD_WEBHOOK', false), + 'message' => ':new: uploaded a new webm: https://w0bm.com/', +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..3fffcf0 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,85 @@ + 'local', + + /* + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | + */ + + 'cloud' => 's3', + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'ftp' => [ + 'driver' => 'ftp', + 'host' => 'ftp.example.com', + 'username' => 'your-username', + 'password' => 'your-password', + + // Optional FTP Settings... + // 'port' => 21, + // 'root' => '', + // 'passive' => true, + // 'ssl' => true, + // 'timeout' => 30, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => 'your-key', + 'secret' => 'your-secret', + 'region' => 'your-region', + 'bucket' => 'your-bucket', + ], + + 'rackspace' => [ + 'driver' => 'rackspace', + 'username' => 'your-username', + 'key' => 'your-key', + 'container' => 'your-container', + 'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/', + 'region' => 'IAD', + 'url_type' => 'publicURL', + ], + + ], + +]; diff --git a/config/ide-helper.php b/config/ide-helper.php new file mode 100644 index 0000000..191af79 --- /dev/null +++ b/config/ide-helper.php @@ -0,0 +1,119 @@ + '_ide_helper', + 'format' => 'php', + + /* + |-------------------------------------------------------------------------- + | Helper files to include + |-------------------------------------------------------------------------- + | + | Include helper files. By default not included, but can be toggled with the + | -- helpers (-H) option. Extra helper files can be included. + | + */ + + 'include_helpers' => false, + + 'helper_files' => array( + base_path().'/vendor/laravel/framework/src/Illuminate/Support/helpers.php', + ), + + /* + |-------------------------------------------------------------------------- + | Model locations to include + |-------------------------------------------------------------------------- + | + | Define in which directories the ide-helper:models command should look + | for models. + | + */ + + 'model_locations' => array( + 'app/Models', + ), + + + /* + |-------------------------------------------------------------------------- + | Extra classes + |-------------------------------------------------------------------------- + | + | These implementations are not really extended, but called with magic functions + | + */ + + 'extra' => array( + 'Eloquent' => array('Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'), + 'Session' => array('Illuminate\Session\Store'), + ), + + 'magic' => array( + 'Log' => array( + 'debug' => 'Monolog\Logger::addDebug', + 'info' => 'Monolog\Logger::addInfo', + 'notice' => 'Monolog\Logger::addNotice', + 'warning' => 'Monolog\Logger::addWarning', + 'error' => 'Monolog\Logger::addError', + 'critical' => 'Monolog\Logger::addCritical', + 'alert' => 'Monolog\Logger::addAlert', + 'emergency' => 'Monolog\Logger::addEmergency', + ) + ), + + /* + |-------------------------------------------------------------------------- + | Interface implementations + |-------------------------------------------------------------------------- + | + | These interfaces will be replaced with the implementing class. Some interfaces + | are detected by the helpers, others can be listed below. + | + */ + + 'interfaces' => array( + '\Illuminate\Contracts\Auth\Authenticatable' => config('auth.model', 'App\User'), + ), + + /* + |-------------------------------------------------------------------------- + | Support for custom DB types + |-------------------------------------------------------------------------- + | + | This setting allow you to map any custom database type (that you may have + | created using CREATE TYPE statement or imported using database plugin + | / extension to a Doctrine type. + | + | Each key in this array is a name of the Doctrine2 DBAL Platform. Currently valid names are: + | 'postgresql', 'db2', 'drizzle', 'mysql', 'oracle', 'sqlanywhere', 'sqlite', 'mssql' + | + | This name is returned by getName() method of the specific Doctrine/DBAL/Platforms/AbstractPlatform descendant + | + | The value of the array is an array of type mappings. Key is the name of the custom type, + | (for example, "jsonb" from Postgres 9.4) and the value is the name of the corresponding Doctrine2 type (in + | our case it is 'json_array'. Doctrine types are listed here: + | http://doctrine-dbal.readthedocs.org/en/latest/reference/types.html + | + | So to support jsonb in your models when working with Postgres, just add the following entry to the array below: + | + | "postgresql" => array( + | "jsonb" => "json_array", + | ), + | + */ + 'custom_db_types' => array( + + ), + +); diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..83dd186 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,124 @@ + env('MAIL_DRIVER', 'mandrill'), + + /* + |-------------------------------------------------------------------------- + | SMTP Host Address + |-------------------------------------------------------------------------- + | + | Here you may provide the host address of the SMTP server used by your + | applications. A default option is provided that is compatible with + | the Mailgun mail service which will provide reliable deliveries. + | + */ + + 'host' => env('MAIL_HOST', 'smtp.mandrillapp.com'), + + /* + |-------------------------------------------------------------------------- + | SMTP Host Port + |-------------------------------------------------------------------------- + | + | This is the SMTP port used by your application to deliver e-mails to + | users of the application. Like the host we have set this value to + | stay compatible with the Mailgun e-mail application by default. + | + */ + + 'port' => env('MAIL_PORT', 587), + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => ['address' => 'info@w0bm.com', 'name' => 'w0bm.com Staff'], + + /* + |-------------------------------------------------------------------------- + | E-Mail Encryption Protocol + |-------------------------------------------------------------------------- + | + | Here you may specify the encryption protocol that should be used when + | the application send e-mail messages. A sensible default using the + | transport layer security protocol should provide great security. + | + */ + + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + + /* + |-------------------------------------------------------------------------- + | SMTP Server Username + |-------------------------------------------------------------------------- + | + | If your SMTP server requires a username for authentication, you should + | set it here. This will get used to authenticate with your server on + | connection. You may also set the "password" value below this one. + | + */ + + 'username' => env('MAIL_USERNAME'), + + /* + |-------------------------------------------------------------------------- + | SMTP Server Password + |-------------------------------------------------------------------------- + | + | Here you may set the password required by your SMTP server to send out + | messages from your application. This will be given to the server on + | connection so that the application will be able to send messages. + | + */ + + 'password' => env('MAIL_PASSWORD'), + + /* + |-------------------------------------------------------------------------- + | Sendmail System Path + |-------------------------------------------------------------------------- + | + | When using the "sendmail" driver to send e-mails, we will need to know + | the path to where Sendmail lives on this server. A default path has + | been provided here, which will work well on most of your systems. + | + */ + + 'sendmail' => '/usr/sbin/sendmail -bs', + + /* + |-------------------------------------------------------------------------- + | Mail "Pretend" + |-------------------------------------------------------------------------- + | + | When this option is enabled, e-mail will not actually be sent over the + | web and will instead be written to your application's logs files so + | you may inspect the message. This is great for local development. + | + */ + + 'pretend' => false, + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..cf9b09d --- /dev/null +++ b/config/queue.php @@ -0,0 +1,93 @@ + env('QUEUE_DRIVER', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'expire' => 60, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'ttr' => 60, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => 'your-public-key', + 'secret' => 'your-secret-key', + 'queue' => 'your-queue-url', + 'region' => 'us-east-1', + ], + + 'iron' => [ + 'driver' => 'iron', + 'host' => 'mq-aws-us-east-1.iron.io', + 'token' => 'your-token', + 'project' => 'your-project-id', + 'queue' => 'your-queue-name', + 'encrypt' => true, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => 'default', + 'expire' => 60, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'database' => 'mysql', 'table' => 'failed_jobs', + ], + +]; diff --git a/config/recaptcha.php b/config/recaptcha.php new file mode 100644 index 0000000..95f95bf --- /dev/null +++ b/config/recaptcha.php @@ -0,0 +1,65 @@ + env('RECAPTCHA_PUBLIC', ''), + 'private_key' => env('RECAPTCHA_PRIVATE', ''), + + /* + |-------------------------------------------------------------------------- + | Template + |-------------------------------------------------------------------------- + | + | Set a template to use if you don't want to use the standard one. + | + */ + 'template' => '', + + /* + |-------------------------------------------------------------------------- + | Driver + |-------------------------------------------------------------------------- + | + | Determine how to call out to get response; values are 'curl' or 'native'. + | Only applies to v2. + | + */ + 'driver' => 'curl', + + /* + |-------------------------------------------------------------------------- + | Options + |-------------------------------------------------------------------------- + | + | Various options for the driver + | + */ + 'options' => array( + + 'curl_timeout' => 1, + 'theme' => 'dark' + + ), + + /* + |-------------------------------------------------------------------------- + | Version + |-------------------------------------------------------------------------- + | + | Set which version of ReCaptcha to use. + | + */ + 'version' => 2, + +); \ No newline at end of file diff --git a/config/sentry.php b/config/sentry.php new file mode 100644 index 0000000..3edb7aa --- /dev/null +++ b/config/sentry.php @@ -0,0 +1,14 @@ + env('SENTRY_DSN'), + + // capture release as git sha + 'release' => trim(exec('git log --pretty="%h" -n1 HEAD')), + + // Capture bindings on SQL queries + 'breadcrumbs.sql_bindings' => true, + + // Capture default user context + 'user_context' => true, +); diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..93eec86 --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + ], + + 'mandrill' => [ + 'secret' => env('MANDRILL_SECRET'), + ], + + 'ses' => [ + 'key' => env('SES_KEY'), + 'secret' => env('SES_SECRET'), + 'region' => 'us-east-1', + ], + + 'stripe' => [ + 'model' => App\User::class, + 'key' => env('STRIPE_KEY'), + 'secret' => env('STRIPE_SECRET'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..fd63f5d --- /dev/null +++ b/config/session.php @@ -0,0 +1,153 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => 60, + + 'expire_on_close' => true, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => true, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => null, + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => 'w0bm_session', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => null, + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => true, + +]; diff --git a/config/taggable.php b/config/taggable.php new file mode 100644 index 0000000..7f17543 --- /dev/null +++ b/config/taggable.php @@ -0,0 +1,11 @@ + ',;', + + 'glue' => ',', + + 'normalizer' => function($str) { + return str_slug($str, ''); + } +]; diff --git a/config/verify.php b/config/verify.php new file mode 100644 index 0000000..e0c70fd --- /dev/null +++ b/config/verify.php @@ -0,0 +1,24 @@ + ['username', 'email'], + + // The Super Admin role + // (returns true for all permissions) + 'super_admin' => 'Super Admin', + + // DB prefix for tables + 'prefix' => '', + + // Define Models if you extend them + 'models' => [ + 'user' => 'App\Models\User', + 'role' => 'App\Models\Role', + 'permission' => 'Toddish\Verify\Models\Permission', + ], + + 'crud_permissions' => [ + 'create_', 'read_', 'update_', 'delete_' + ] + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..e193ab6 --- /dev/null +++ b/config/view.php @@ -0,0 +1,33 @@ + [ + realpath(base_path('resources/views')), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => realpath(storage_path('framework/views')), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b1dffd --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php new file mode 100644 index 0000000..0876c70 --- /dev/null +++ b/database/factories/ModelFactory.php @@ -0,0 +1,21 @@ +define(App\User::class, function (Faker\Generator $faker) { + return [ + 'name' => $faker->name, + 'email' => $faker->email, + 'password' => bcrypt(str_random(10)), + 'remember_token' => str_random(10), + ]; +}); diff --git a/database/migrations/.gitkeep b/database/migrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/database/migrations/2015_03_20_193906_verify_init.php b/database/migrations/2015_03_20_193906_verify_init.php new file mode 100644 index 0000000..5803c7c --- /dev/null +++ b/database/migrations/2015_03_20_193906_verify_init.php @@ -0,0 +1,100 @@ +prefix = Config::get('verify.prefix', ''); + } + + public function up() + { + $prefix = $this->prefix; + + Schema::create($prefix . 'permissions', function($table) + { + $table->engine = 'InnoDB'; + + $table->increments('id'); + $table->string('name', 100)->index(); + $table->string('description', 255)->nullable(); + $table->timestamps(); + }); + + Schema::create($prefix . 'roles', function($table) + { + $table->engine = 'InnoDB'; + + $table->increments('id'); + $table->string('name', 100)->index(); + $table->string('description', 255)->nullable(); + $table->integer('level'); + $table->timestamps(); + }); + + Schema::create($prefix . 'users', function($table) + { + $table->engine = 'InnoDB'; + + $table->increments('id'); + $table->string('username', 30)->index(); + $table->string('password', 60)->index(); + $table->string('salt', 32); + $table->string('email', 255)->index(); + $table->string('remember_token', 100)->nullable()->index(); + $table->boolean('verified')->default(0); + $table->boolean('disabled')->default(0); + $table->softDeletes(); + $table->timestamps(); + }); + + Schema::create($prefix . 'role_user', function($table) use ($prefix) + { + $table->engine = 'InnoDB'; + + $table->integer('user_id')->unsigned()->index(); + $table->integer('role_id')->unsigned()->index(); + $table->timestamps(); + + $table->foreign('user_id') + ->references('id') + ->on($prefix . 'users') + ->onDelete('cascade'); + + $table->foreign('role_id') + ->references('id') + ->on($prefix . 'roles') + ->onDelete('cascade'); + }); + + Schema::create($prefix . 'permission_role', function($table) use ($prefix) + { + $table->engine = 'InnoDB'; + + $table->integer('permission_id')->unsigned()->index(); + $table->integer('role_id')->unsigned()->index(); + $table->timestamps(); + + $table->foreign('permission_id') + ->references('id') + ->on($prefix . 'permissions') + ->onDelete('cascade'); + + $table->foreign('role_id') + ->references('id') + ->on($prefix . 'roles') + ->onDelete('cascade'); + }); + } + + public function down() + { + Schema::drop($this->prefix . 'role_user'); + Schema::drop($this->prefix . 'permission_role'); + Schema::drop($this->prefix . 'users'); + Schema::drop($this->prefix . 'roles'); + Schema::drop($this->prefix . 'permissions'); + } +} diff --git a/database/migrations/2015_09_11_071445_create_videos_table.php b/database/migrations/2015_09_11_071445_create_videos_table.php new file mode 100644 index 0000000..8441675 --- /dev/null +++ b/database/migrations/2015_09_11_071445_create_videos_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->string('file')->unique(); + $table->string('interpret')->nullable(); + $table->string('songtitle')->nullable(); + $table->string('imgsource')->nullable(); + $table->unsignedInteger('category_id'); + $table->unsignedInteger('user_id'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('videos'); + } +} diff --git a/database/migrations/2015_09_11_073012_create_categories_table.php b/database/migrations/2015_09_11_073012_create_categories_table.php new file mode 100644 index 0000000..d24ced2 --- /dev/null +++ b/database/migrations/2015_09_11_073012_create_categories_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('name'); + $table->string('shortname')->unique(); + $table->text('description')->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('categories'); + } +} diff --git a/database/migrations/2015_09_11_073654_create_comments_table.php b/database/migrations/2015_09_11_073654_create_comments_table.php new file mode 100644 index 0000000..95899aa --- /dev/null +++ b/database/migrations/2015_09_11_073654_create_comments_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->text('content'); + $table->unsignedInteger('user_id'); + $table->unsignedInteger('video_id'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('comments'); + } +} diff --git a/database/migrations/2015_09_11_091705_add_hash_to_videos_table.php b/database/migrations/2015_09_11_091705_add_hash_to_videos_table.php new file mode 100644 index 0000000..8b12226 --- /dev/null +++ b/database/migrations/2015_09_11_091705_add_hash_to_videos_table.php @@ -0,0 +1,31 @@ +char('hash', 40)->default(''); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('videos', function(Blueprint $table) { + $table->dropColumn('hash'); + }); + } +} diff --git a/database/migrations/2015_09_12_075501_add_activation_token_to_users_table.php b/database/migrations/2015_09_12_075501_add_activation_token_to_users_table.php new file mode 100644 index 0000000..f670b9e --- /dev/null +++ b/database/migrations/2015_09_12_075501_add_activation_token_to_users_table.php @@ -0,0 +1,31 @@ +string('activation_token', 50)->nullable()->index()->after('remember_token'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function(Blueprint $table) { + $table->dropColumn('activation_token'); + }); + } +} diff --git a/database/migrations/2015_09_17_092718_create_moderator_log_table.php b/database/migrations/2015_09_17_092718_create_moderator_log_table.php new file mode 100644 index 0000000..ce1bb52 --- /dev/null +++ b/database/migrations/2015_09_17_092718_create_moderator_log_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->unsignedInteger('user_id'); + $table->string('type'); + $table->string('target_type'); + $table->unsignedInteger('target_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('moderator_logs'); + } +} diff --git a/database/migrations/2015_09_17_110239_add_background_to_users_table.php b/database/migrations/2015_09_17_110239_add_background_to_users_table.php new file mode 100644 index 0000000..fba278b --- /dev/null +++ b/database/migrations/2015_09_17_110239_add_background_to_users_table.php @@ -0,0 +1,31 @@ +boolean('background')->default(true)->after('email'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function(Blueprint $table) { + $table->dropColumn('background'); + }); + } +} diff --git a/database/migrations/2015_09_22_132140_create_user_video_table.php b/database/migrations/2015_09_22_132140_create_user_video_table.php new file mode 100644 index 0000000..4d298a5 --- /dev/null +++ b/database/migrations/2015_09_22_132140_create_user_video_table.php @@ -0,0 +1,34 @@ +unsignedInteger('user_id')->index(); + $table->unsignedInteger('video_id')->index(); + $table->timestamps(); + + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + $table->foreign('video_id')->references('id')->on('videos')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('favorites'); + } +} diff --git a/database/migrations/2015_10_12_093808_create_messages_table.php b/database/migrations/2015_10_12_093808_create_messages_table.php new file mode 100644 index 0000000..b0c2248 --- /dev/null +++ b/database/migrations/2015_10_12_093808_create_messages_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->unsignedInteger('from')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); + $table->unsignedInteger('to')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); + $table->text('content'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + \Illuminate\Support\Facades\Schema::drop('messages'); + } +} diff --git a/database/migrations/2015_10_17_210135_add_read_field_to_messages_table.php b/database/migrations/2015_10_17_210135_add_read_field_to_messages_table.php new file mode 100644 index 0000000..b09d5ff --- /dev/null +++ b/database/migrations/2015_10_17_210135_add_read_field_to_messages_table.php @@ -0,0 +1,32 @@ +timestamp('read')->nullable(); + $table->string('subject')->default(''); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('messages', function(Blueprint $table) { + $table->dropColumn(['read', 'subject']); + }); + } +} diff --git a/database/migrations/2016_06_05_074310_adds_categories_field_to_users_table.php b/database/migrations/2016_06_05_074310_adds_categories_field_to_users_table.php new file mode 100644 index 0000000..496d32e --- /dev/null +++ b/database/migrations/2016_06_05_074310_adds_categories_field_to_users_table.php @@ -0,0 +1,31 @@ +json('categories')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('categories'); + }); + } +} diff --git a/database/migrations/2016_08_12_142635_add_banning_to_user_table.php b/database/migrations/2016_08_12_142635_add_banning_to_user_table.php new file mode 100644 index 0000000..321c3e1 --- /dev/null +++ b/database/migrations/2016_08_12_142635_add_banning_to_user_table.php @@ -0,0 +1,32 @@ +string('banreason')->nullable(); + $table->timestamp('banend')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn(['banreason', 'banend']); + }); + } +} diff --git a/database/migrations/2016_09_22_092717_add_icons.php b/database/migrations/2016_09_22_092717_add_icons.php new file mode 100644 index 0000000..b8bbe0f --- /dev/null +++ b/database/migrations/2016_09_22_092717_add_icons.php @@ -0,0 +1,55 @@ +increments('id'); + $table->string('icon', 255); + $table->string('icon_type', 255); + }); + + Schema::table('users', function(Blueprint $table) { + $table->unsignedInteger('icon_id')->index()->nullable(); + $table->foreign('icon_id') + ->references('id') + ->on('icons') + ->onDelete('cascade'); + }); + + Schema::table('roles', function(Blueprint $table) { + $table->unsignedInteger('icon_id')->index()->nullable(); + $table->foreign('icon_id') + ->references('id') + ->on('icons') + ->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('icons'); + + Schema::table('users', function(Blueprint $table) { + $table->dropColumn('icon_id'); + }); + + Schema::table('roles', function(Blueprint $table) { + $table->dropColumn('icon_id'); + }); + } +} diff --git a/database/migrations/2016_09_29_231241_add_reason_to_moderator_logs_table.php b/database/migrations/2016_09_29_231241_add_reason_to_moderator_logs_table.php new file mode 100644 index 0000000..105182f --- /dev/null +++ b/database/migrations/2016_09_29_231241_add_reason_to_moderator_logs_table.php @@ -0,0 +1,31 @@ +string('reason')->nullable()->after('target_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('moderator_logs', function (Blueprint $table) { + $table->dropColumn('reason'); + }); + } +} diff --git a/database/migrations/2016_10_07_175820_create_taggable_table.php b/database/migrations/2016_10_07_175820_create_taggable_table.php new file mode 100644 index 0000000..d3a5b90 --- /dev/null +++ b/database/migrations/2016_10_07_175820_create_taggable_table.php @@ -0,0 +1,43 @@ +increments('tag_id'); + $table->string('name'); + $table->string('normalized')->index(); + $table->timestamps(); + }); + + Schema::create('taggable_taggables', function (Blueprint $table) { + $table->unsignedInteger('tag_id'); + $table->unsignedInteger('taggable_id'); + $table->string('taggable_type'); + $table->timestamps(); + $table->primary(['tag_id', 'taggable_id', 'taggable_type']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('taggable_tags'); + Schema::drop('taggable_taggables'); + } +} diff --git a/database/migrations/2017_01_04_113103_banners.php b/database/migrations/2017_01_04_113103_banners.php new file mode 100644 index 0000000..b984f83 --- /dev/null +++ b/database/migrations/2017_01_04_113103_banners.php @@ -0,0 +1,35 @@ +increments('id'); + $t->string('customer')->nullable(); + $t->string('url'); + $t->string('image'); + $t->boolean('sfw'); + $t->timestamp('until'); + $t->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('banners'); + } +} diff --git a/database/migrations/2017_03_11_032502_remove_background_from_users_table.php b/database/migrations/2017_03_11_032502_remove_background_from_users_table.php new file mode 100644 index 0000000..cd0c1d7 --- /dev/null +++ b/database/migrations/2017_03_11_032502_remove_background_from_users_table.php @@ -0,0 +1,31 @@ +dropColumn('background'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function(Blueprint $table) { + $table->boolean('background')->default(true)->after('email'); + }); + } +} diff --git a/database/migrations/2017_03_11_035727_add_donations_table.php b/database/migrations/2017_03_11_035727_add_donations_table.php new file mode 100644 index 0000000..b0a90a8 --- /dev/null +++ b/database/migrations/2017_03_11_035727_add_donations_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('name')->nullable(); + $table->string('url')->nullable(); + $table->float('amount', 5, 2); + $table->string('payment_method')->nullable(); + $table->timestamp('timestamp'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('donations'); + } +} diff --git a/database/migrations/2017_03_15_143023_change_amount_type_to_decimal_in_donations_table.php b/database/migrations/2017_03_15_143023_change_amount_type_to_decimal_in_donations_table.php new file mode 100644 index 0000000..0fc0c42 --- /dev/null +++ b/database/migrations/2017_03_15_143023_change_amount_type_to_decimal_in_donations_table.php @@ -0,0 +1,32 @@ +decimal('amount', 13, 4)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('donations', function(Blueprint $table) { + $table->float('amount', 5, 2)->change(); + }); + + } +} diff --git a/database/migrations/2018_03_11_000710_fix_default_values_in_favorites_table.php b/database/migrations/2018_03_11_000710_fix_default_values_in_favorites_table.php new file mode 100644 index 0000000..1304305 --- /dev/null +++ b/database/migrations/2018_03_11_000710_fix_default_values_in_favorites_table.php @@ -0,0 +1,36 @@ +unique('hash'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('videos', function(Blueprint $table) { + $table->dropUnique('videos_hash_unique'); + }); + } +} diff --git a/database/migrations/2019_04_02_211851_add_videotitle_column_to_video_table.php b/database/migrations/2019_04_02_211851_add_videotitle_column_to_video_table.php new file mode 100644 index 0000000..09480fe --- /dev/null +++ b/database/migrations/2019_04_02_211851_add_videotitle_column_to_video_table.php @@ -0,0 +1,31 @@ +string('videotitle')->nullable()->after('file'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('videos', function (Blueprint $table) { + $table->dropColumn('videotitle'); + }); + } +} + diff --git a/database/migrations/2019_08_11_004648_add_layout_column_to_user_table.php b/database/migrations/2019_08_11_004648_add_layout_column_to_user_table.php new file mode 100644 index 0000000..4fa2685 --- /dev/null +++ b/database/migrations/2019_08_11_004648_add_layout_column_to_user_table.php @@ -0,0 +1,31 @@ +integer('layout')->unsigned()->default(1)->after('icon_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('layout'); + }); + } +} diff --git a/database/seeds/.gitkeep b/database/seeds/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/database/seeds/CategorySeeder.php b/database/seeds/CategorySeeder.php new file mode 100644 index 0000000..aae9c31 --- /dev/null +++ b/database/seeds/CategorySeeder.php @@ -0,0 +1,64 @@ + 'Musicvideos', + 'shortname' => 'mv', + 'description' => 'WebMs containing music' + ]); + + Category::create([ + 'name' => 'Anime', + 'shortname' => 'anime', + 'description' => 'Everything from AMV to Hentai' + ]); + + Category::create([ + 'name' => 'Russia', + 'shortname' => 'russia', + 'description' => 'Сука Блять' + ]); + + Category::create([ + 'name' => 'Asians', + 'shortname' => 'asians', + 'description' => 'Mostly Korean and Japanese girls' + ]); + + Category::create([ + 'name' => 'Funny', + 'shortname' => 'funny', + 'description' => 'Supposed to be funny' + ]); + + Category::create([ + 'name' => 'Pr0n', + 'shortname' => 'pr0n', + 'description' => 'Crazy Japanese porn you will find my son' + ]); + + Category::create([ + 'name' => 'Politics', + 'shortname' => 'pol', + 'description' => 'Videos about faggots in suits' + ]); + + Category::create([ + 'name' => 'Misc', + 'shortname' => 'misc', + 'description' => 'Stuff that doesnt fit anywhere else' + ]); + + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php new file mode 100644 index 0000000..b47ebab --- /dev/null +++ b/database/seeds/DatabaseSeeder.php @@ -0,0 +1,25 @@ +call(CategorySeeder::class); + $this->call(VerifyUserSeeder::class); + $this->call(VideoTableSeeder::class); + $this->call(PermissionSeeder::class); + $this->call(RoleSeeder::class); + $this->call(FilterSeeder::class); + + Model::reguard(); + } +} diff --git a/database/seeds/FilterSeeder.php b/database/seeds/FilterSeeder.php new file mode 100644 index 0000000..3ea89be --- /dev/null +++ b/database/seeds/FilterSeeder.php @@ -0,0 +1,21 @@ +get() as $user) { + $user->categories = $cats; + $user->save(); + } + } +} diff --git a/database/seeds/PermissionSeeder.php b/database/seeds/PermissionSeeder.php new file mode 100644 index 0000000..3cc4cc2 --- /dev/null +++ b/database/seeds/PermissionSeeder.php @@ -0,0 +1,27 @@ + 'delete_user']); + Permission::create(['name' => 'delete_video']); + Permission::create(['name' => 'delete_category']); + Permission::create(['name' => 'edit_user']); + Permission::create(['name' => 'edit_video']); + Permission::create(['name' => 'edit_category']); + Permission::create(['name' => 'add_category']); + Permission::create(['name' => 'edit_comment']); + Permission::create(['name' => 'delete_comment']); + Permission::create(['name' => 'break_upload_limit']); + Permission::create(['name' => 'break_max_filesize']); + } +} diff --git a/database/seeds/RoleSeeder.php b/database/seeds/RoleSeeder.php new file mode 100644 index 0000000..de44faa --- /dev/null +++ b/database/seeds/RoleSeeder.php @@ -0,0 +1,19 @@ + 'Moderator', 'level' => 7]); + $perms = \Toddish\Verify\Models\Permission::all(['id']); + $mod->permissions()->sync($perms); + } +} diff --git a/database/seeds/VerifyUserSeeder.php b/database/seeds/VerifyUserSeeder.php new file mode 100644 index 0000000..e42b220 --- /dev/null +++ b/database/seeds/VerifyUserSeeder.php @@ -0,0 +1,38 @@ +insertGetId([ + 'name' => Config::get('verify.super_admin'), + 'level' => 10, + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s') + ]); + + $user_id = DB::table($prefix . 'users')->insertGetId([ + 'username' => 'admin', + 'password' => '$2a$08$rqN6idpy0FwezH72fQcdqunbJp7GJVm8j94atsTOqCeuNvc3PzH3m', + 'salt' => 'a227383075861e775d0af6281ea05a49', + 'email' => 'admin@example.com', + 'verified' => 1, + 'disabled' => 0, + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s') + ]); + + DB::table($prefix . 'role_user')->insert([ + 'role_id' => $role_id, + 'user_id' => $user_id, + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s') + ]); + + $this->command->info('User table seeded!'); + } +} \ No newline at end of file diff --git a/database/seeds/VideoTableSeeder.php b/database/seeds/VideoTableSeeder.php new file mode 100644 index 0000000..7272a9d --- /dev/null +++ b/database/seeds/VideoTableSeeder.php @@ -0,0 +1,39 @@ +first(); + $user = \App\Models\User::find(1); + + foreach($videos as $video) { + if(\App\Models\Video::whereFile(basename($video))->count() > 0) + continue; + + $v = new \App\Models\Video(); + $v->user()->associate($user); + $v->category()->associate($category); + $v->hash = sha1_file($video); + $v->file = basename($video); + $v->save(); + } + } +} diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..dc6f1eb --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,16 @@ +var elixir = require('laravel-elixir'); + +/* + |-------------------------------------------------------------------------- + | Elixir Asset Management + |-------------------------------------------------------------------------- + | + | Elixir provides a clean, fluent API for defining some basic Gulp tasks + | for your Laravel application. By default, we are compiling the Sass + | file for our application, as well as publishing vendor resources. + | + */ + +elixir(function(mix) { + mix.sass('app.scss'); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f9c548f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2775 @@ +{ + "name": "w0bm", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "optional": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true, + "optional": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true, + "optional": true + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.15.0", + "convert-source-map": "1.5.1", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-evaluate-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.3.0.tgz", + "integrity": "sha512-dRFlMTqUJRGzx5a2smKxmptDdNCXKSkPcXWzKLwAV72hvIZumrd/0z9RcewHkr7PmAEq+ETtpD1GK6wZ6ZUXzw==", + "dev": true + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.3.0.tgz", + "integrity": "sha512-nrho5Dg4vl0VUgURVpGpEGiwbst5JX7efIyDHFxmkCx/ocQFnrPt8ze9Kxl6TKjR29bJ7D/XKY1NMlSxOQJRbQ==", + "dev": true + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-minify-builtins": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.3.0.tgz", + "integrity": "sha512-MqhSHlxkmgURqj3144qPksbZ/qof1JWdumcbucc4tysFcf3P3V3z3munTevQgKEFNMd8F5/ECGnwb63xogLjAg==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "0.3.0" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.3.0.tgz", + "integrity": "sha512-TgZj6ay8zDw74AS3yiIfoQ8vRSNJisYO/Du60S8nPV7EW7JM6fDMx5Sar6yVHlVuuwNgvDUBh191K33bVrAhpg==", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.3.0.tgz", + "integrity": "sha512-iZsYAIjYLLfLK0yN5WVT7Xf7Y3wQ9Z75j9A8q/0IglQSpUt2ppTdHlwl/GeaXnxdaSmsxBu861klbTBbv2n+RA==", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.0.tgz", + "integrity": "sha512-bxtac+8w755ctVeDs4vU98RhWY49eW1wO02HAN+eirZYSKk/dVrKONIznXbHmxWKxT4UX1rpTKOCyezuzLpbTw==", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.0.tgz", + "integrity": "sha512-9G1URVEEKoQLDqe0GwqYudECN7kE/q0OCNo5TiD1iwWnnaKi97xY915l5r2KKUvNflXEm9c3faNWknSXYQ7h6Q==", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.0.tgz", + "integrity": "sha512-JtpyTRyF+wF/r7GSxpRbNCrVve5M/aCC8xoGcnFItaPUDqjxKmFYvBzMc9u+g0lgo8NWjuZLc16MYaIwkHKD/A==", + "dev": true + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.0.tgz", + "integrity": "sha512-B8s+71+4DPye9+pmZiPGgLPy3YqcmIuvE/9UcZLczPlwL5ALwF6qRUdLC3Fk17NhL6jxp4u33ZVZ8R4kvASPzw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.3.0.tgz", + "integrity": "sha512-h92YHzyl042rb0naKO8frTHntpRFwRgKkfWD8602kFHoQingjJNtbvZzvxqHncJ6XmKVyYvfrBpDOSkCTDIIxw==", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.0.tgz", + "integrity": "sha512-mck9//yGTwObqqqDzY/sISO88/5/XfIB3ILb4uJLXk2xq124NT4yQVjFSRgVSbLcNq8OyBAn2acxKUqg4W/okQ==", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.0.tgz", + "integrity": "sha512-i/HWGjsmL2d1N2dl+eIzf44XpSP5v7hi1/GXB0xzom9kjrU8js3T8Kadizn95ZxfHK592Vg8P4JJWP/fvimEWw==", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.3.0.tgz", + "integrity": "sha512-TYGQucc8iP3LJwN3kDZLEz5aa/2KuFrqpT+s8f8NnHsBU1sAgR3y8Opns0xhC+smyDYWscqFCKM1gbkWQOhhnw==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "0.3.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.0.tgz", + "integrity": "sha512-EJyfYeph0CSekwQuwWVwJqy2go/bETkR95iaWQ/HTUis7tkCGNYmXngaFzuIXdmoPXfvmXYCvAXR4/93hqHVjw==", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.0.tgz", + "integrity": "sha512-AVDVEmp0S9mbF1O8zekWbsOOmqnR08PZah5NRZJqSvJnFgiL0ep4Lwo4EymH8OieJR2QgQdR3q71TNW+wiVn4g==", + "dev": true + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.3", + "invariant": "2.2.3", + "semver": "5.5.0" + } + }, + "babel-preset-minify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.3.0.tgz", + "integrity": "sha512-+VV2GWEyak3eDOmzT1DDMuqHrw3VbE9nBNkx2LLVs4pH/Me32ND8DRpVDd8IRvk1xX5p75nygyRPtkMh6GIAbQ==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "0.3.0", + "babel-plugin-minify-constant-folding": "0.3.0", + "babel-plugin-minify-dead-code-elimination": "0.3.0", + "babel-plugin-minify-flip-comparisons": "0.3.0", + "babel-plugin-minify-guarded-expressions": "0.3.0", + "babel-plugin-minify-infinity": "0.3.0", + "babel-plugin-minify-mangle-names": "0.3.0", + "babel-plugin-minify-numeric-literals": "0.3.0", + "babel-plugin-minify-replace": "0.3.0", + "babel-plugin-minify-simplify": "0.3.0", + "babel-plugin-minify-type-constructors": "0.3.0", + "babel-plugin-transform-inline-consecutive-adds": "0.3.0", + "babel-plugin-transform-member-expression-literals": "6.9.0", + "babel-plugin-transform-merge-sibling-variables": "6.9.0", + "babel-plugin-transform-minify-booleans": "6.9.0", + "babel-plugin-transform-property-literals": "6.9.0", + "babel-plugin-transform-regexp-constructors": "0.3.0", + "babel-plugin-transform-remove-console": "6.9.0", + "babel-plugin-transform-remove-debugger": "6.9.0", + "babel-plugin-transform-remove-undefined": "0.3.0", + "babel-plugin-transform-simplify-comparison-operators": "6.9.0", + "babel-plugin-transform-undefined-to-void": "6.9.0", + "lodash.isplainobject": "4.0.6" + }, + "dependencies": { + "babel-helper-flip-expressions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.3.0.tgz", + "integrity": "sha512-kNGohWmtAG3b7tN1xocRQ5rsKkH/hpvZsMiGOJ1VwGJKhnwzR5KlB3rvKBaBPl5/IGHcopB2JN+r1SUEX1iMAw==", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.3.0.tgz", + "integrity": "sha512-JVqdX8y7Rf/x4NwbqtUI7mdQjL9HWoDnoAEQ8Gv8oxzjvbJv+n75f7l36m9Y8C7sCUltX3V5edndrp7Hp1oSXQ==", + "dev": true + }, + "babel-helper-remove-or-void": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.3.0.tgz", + "integrity": "sha512-D68W1M3ibCcbg0ysh3ww4/O0g10X1CXK720oOuR8kpfY7w0yP4tVcpK7zDmI1JecynycTQYAZ1rhLJo9aVtIKQ==", + "dev": true + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.3.0.tgz", + "integrity": "sha512-1uCrBD+EAaMnAYh7hc944n8Ga19y3daEnoXWPYDvFVsxMCc1l8aDjksApaCEaNSSuewq8BEcff47Cy1PbLg2Gw==", + "dev": true + }, + "babel-plugin-minify-constant-folding": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.3.0.tgz", + "integrity": "sha512-1XeRpx+aY1BuNY6QU/cm6P+FtEi3ar3XceYbmC+4q4W+2Ewq5pL7V68oHg1hKXkBIE0Z4/FjSoHz6vosZLOe/A==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "0.3.0" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.3.0.tgz", + "integrity": "sha512-SjM2Fzg85YZz+q/PNJ/HU4O3W98FKFOiP9K5z3sfonlamGOzvZw3Eup2OTiEBsbbqTeY8yzNCAv3qpJRYCgGmw==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "0.3.0", + "babel-helper-mark-eval-scopes": "0.3.0", + "babel-helper-remove-or-void": "0.3.0", + "lodash.some": "4.6.0" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.3.0.tgz", + "integrity": "sha512-B8lK+ekcpSNVH7PZpWDe5nC5zxjRiiT4nTsa6h3QkF3Kk6y9qooIFLemdGlqBq6j0zALEnebvCpw8v7gAdpgnw==", + "dev": true, + "requires": { + "babel-helper-is-void-0": "0.3.0" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.3.0.tgz", + "integrity": "sha512-O+6CvF5/Ttsth3LMg4/BhyvVZ82GImeKMXGdVRQGK/8jFiP15EjRpdgFlxv3cnqRjqdYxLCS6r28VfLpb9C/kA==", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "0.3.0" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.3.0.tgz", + "integrity": "sha512-Sj8ia3/w9158DWieUxU6/VvnYVy59geeFEkVgLZYBE8EBP+sN48tHtBM/jSgz0ejEdBlcfqJ6TnvPmVXTzR2BQ==", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.3.0.tgz", + "integrity": "sha512-PYTonhFWURsfAN8achDwvR5Xgy6EeTClLz+fSgGRqjAIXb0OyFm3/xfccbQviVi1qDXmlSnt6oJhBg8KE4Fn7Q==", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "0.3.0" + } + }, + "babel-plugin-minify-replace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.3.0.tgz", + "integrity": "sha512-VR6tTg2Lt0TicHIOw04fsUtpPw7RaRP8PC8YzSFwEixnzvguZjZJoL7TgG7ZyEWQD1cJ96UezswECmFNa815bg==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.3.0.tgz", + "integrity": "sha512-2M16ytQOCqBi7bYMu4DCWn8e6KyFCA108F6+tVrBJxOmm5u2sOmTFEa8s94tR9RHRRNYmcUf+rgidfnzL3ik9Q==", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "0.3.0", + "babel-helper-is-nodes-equiv": "0.0.1", + "babel-helper-to-multiple-sequence-expressions": "0.3.0" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.3.0.tgz", + "integrity": "sha512-XRXpvsUCPeVw9YEUw+9vSiugcSZfow81oIJT0yR9s8H4W7yJ6FHbImi5DJHoL8KcDUjYnL9wYASXk/fOkbyR6Q==", + "dev": true, + "requires": { + "babel-helper-is-void-0": "0.3.0" + } + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "optional": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000813", + "electron-to-chromium": "1.3.37" + } + }, + "caniuse-lite": { + "version": "1.0.30000813", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz", + "integrity": "sha512-A8ITSmH5SFdMFdC704ggjg+x2z5PzQmVlG8tavwnfvbC33Q1UYrj0+G+Xm0SNAnd4He36fwUE/KEWytOEchw+A==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "commander": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "electron-to-chromium": { + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.37.tgz", + "integrity": "sha1-SpJzTgBEyM8LFVO+V+riGkxuX6s=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "optional": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "optional": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "optional": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "optional": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "optional": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "optional": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true, + "optional": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "optional": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true, + "optional": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "optional": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "optional": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "optional": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true, + "optional": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true, + "optional": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "optional": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.5", + "set-immediate-shim": "1.0.1" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "optional": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "optional": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true, + "optional": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, + "optional": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..578d5a8 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "w0bm", + "private": true, + "scripts": { + "build": "babel public/js/w0bmscript.js -o public/js/w0bmscript.min.js --source-maps" + }, + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-preset-minify": "^0.3.0" + }, + "dependencies": {} +} diff --git a/phpspec.yml b/phpspec.yml new file mode 100644 index 0000000..eb57939 --- /dev/null +++ b/phpspec.yml @@ -0,0 +1,5 @@ +suites: + main: + namespace: App + psr4_prefix: App + src_path: app \ No newline at end of file diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..276262d --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,28 @@ + + + + + ./tests/ + + + + + app/ + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..42de647 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,19 @@ + + + Options -MultiViews + + + RewriteEngine On + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)/$ /$1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + + +php_value post_max_size 155M +php_value upload_max_filesize 150M diff --git a/public/404.gif b/public/404.gif new file mode 100644 index 0000000..045b2ae Binary files /dev/null and b/public/404.gif differ diff --git a/public/4wb.png b/public/4wb.png new file mode 100644 index 0000000..ae7f429 Binary files /dev/null and b/public/4wb.png differ diff --git a/public/RainbowAmerica.svg b/public/RainbowAmerica.svg new file mode 100644 index 0000000..19708f2 --- /dev/null +++ b/public/RainbowAmerica.svg @@ -0,0 +1,257 @@ + + + Rainbow America + + + + image/svg+xml + + Rainbow America + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/adminer.css b/public/adminer.css new file mode 100644 index 0000000..1d032e9 --- /dev/null +++ b/public/adminer.css @@ -0,0 +1,570 @@ +/* Theme "Nette" for Adminer, (c) David Grudl */ + +/* +it is based on some parts of: +- Nette Framework design - http://api.nette.org +- CSS by Brade - http://www.bradezone.com +- Silk icon set 1.3 by Mark James - http://www.famfamfam.com/lab/icons/silk +- CSS icons by Hever - http://hev.cz +*/ + + +body { + background: #FFF; + color: #333; + font: 13px/18px Helvetica, Arial, sans-serif; +} + +/* generic */ +a, a:visited { + padding: 3px 2px; + color: #006AEB; + text-decoration: none; +} + +a:hover { + background-color: #006AEB !important; + border-bottom: 1px solid #006AEB; + color: #FFF; +} + +p { + margin-bottom: 4px; + padding-bottom: 4px; +} + +h1 { + background: none; + border: none; + color: #666; + font-size: 18px; + font-weight: bold; + height: 40px; + padding: 0 0 8px; +} + +h2 { + background: transparent; + border: none; + color: #333; + font: 32px Georgia,serif; + margin: 0; + padding: 10px 0 8px; +} + +h3 { + font-size: 18px; + font-weight: bold; + margin: 0; + padding: 4px 0; +} + +fieldset { + border: 1px solid #CCC; + float: left; + margin-bottom: 8px; + margin-right: 4px; + min-height: 48px; + padding: 0 4px 4px; +} + +fieldset div { + margin-top: 4px; +} + +input, select, textarea { + border: 1px solid #CCC; + color: #555; + font: 13px Helvetica,Arial,sans-serif; + padding: 3px; +} + +select { + padding: 2px; +} + +textarea, .sqlarea { + font-family: Consolas,monospace; + height: 500px; +} + +input[type=submit] { + background: #4890E7; + color: white; + cursor: pointer; + padding: 3px; + border: none; +} + +input[type=submit]:hover { + background-color: #006AEB; +} + +input[type=image], input[type=checkbox] { + border: none; + padding: 0; + vertical-align: middle; +} + +label input[type=checkbox], td input[type=radio], td span select { + margin-right: 4px; +} + +fieldset select { + margin-right: 4px; +} + +option { + padding: 0 5px; +} + +optgroup { + font-size: 11px; +} + +code { + background: #EEE; + font-family: Consolas,monospace; + padding: 2px 4px; +} + +code a:hover { + background-color: transparent !important; +} + +table { + border: 1px solid #D0CDC4; + font-size: inherit; + margin: 4px 0 8px; +} + +tbody tr:hover td, tbody tr:hover th { + background: #EDF4FF; +} + +th, td { + background: inherit; + border: 1px dotted #CCC; + border-width:0 0 0 1px; + font-weight: normal; + margin: 0; + padding: 3px 5px; + text-align: left; + vertical-align: top; +} + +.odd th, .odd td { + background: #FCFAF5; +} + +.js .checked th, .js .checked td { + background: #CEE0FC; +} + +thead th, thead td { + background: #F2EEE1; + border-color: #D0CDC4; + font-weight: bold; + white-space: nowrap; +} + +thead tr:hover td, thead tr:hover th, +.js thead .checked th, .js thead .checked td { + background: #F2EEE1; +} + +th:first-child, td:first-child { + border-color: transparent; + white-space: nowrap; +} + +td[align=right] { + text-align: right; +} + +table code { + font-size: 13px; + line-height: 18px; +} + +.hidden { + display: none; +} + +.error, .message { + background: transparent; + font-weight: bold; + padding: 0; +} + +.error { + color: #C00; +} + +.message { + color: #090; +} + +/* specific */ + +#content { + height: 100%; + margin: 40px 0 0 300px; + padding: 20px; + background: white; + z-index: 1; +} + +#content:after { + clear: both; + content: ""; + display: table; +} + +#content > h2:before { + display: block; + content: ""; + color: #FF9; + font-size: 13px; + background: #333; + line-height: 40px; + margin: 0; + padding: 0 0 0 20px; + position: fixed; + top: 0; + left: 300px; + width: 100%; + height: 40px; + +} + +#content > #breadcrumb + h2:before { + display: none; +} + +#content > p { + clear: left; +} + +#lang { + background: #333; + color: #FFF; + height: 40px; + line-height: 40px; + padding: 0 0 0 40px; + position: fixed; + top: 0; + left: 0; + width: 260px; +} + +#lang select { + border: none; + background: #5F5F5F; + color: white; +} + +#menu { + background: #FCFAF5; + border-right: 5px solid #E4E2DA; + bottom: 0; + margin: 0; + overflow: auto; + padding: 10px 15px; + position: fixed; + top: 40px; + width: 240px; +} + +#menu a { + color: #333; + border: none; + margin-right: 4px; +} + +#tables a { + padding: 1px 2px; +} + +#menu a:hover { + color: #FFF; +} + +#menu p { + border: none; + margin: 0 0 4px; + padding: 0 0 4px; + white-space: nowrap; +} + +#breadcrumb { + background: #333; + color: #FFF; + line-height: 40px; + margin: 0; + padding: 0 0 0 20px; + position: fixed; + top: 0; + left: 300px; + width: 100%; + height: 40px; +} + +#breadcrumb a { + color: #FF9; +} + +#breadcrumb a:hover { + background: transparent; + border-color: #FF9; + color: #FF9; +} + +#schema .table { + background: #F3F3F3; + padding: 4px 8px; +} + +#logins a, #tables a { + background: transparent; +} + +/* IE hacks */ +* + html th:first-child, * + html td:first-child { + border-color: inherit; + white-space: inherit; +} + +* html #lang, * html #menu, * html #breadcrumb { + position: absolute; +} + +* html #lang { + height: 30px; + padding-top: 10px; +} + +* html form#form { + height: 100%; +} + +#content > p.tabs + *:after { + display: table; + clear: both; + content: ""; +} + + + +/* icons */ +.error { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIsSURBVDjLpVNLSJQBEP7+h6uu62vLVAJDW1KQTMrINQ1vPQzq1GOpa9EppGOHLh0kCEKL7JBEhVCHihAsESyJiE4FWShGRmauu7KYiv6Pma+DGoFrBQ7MzGFmPr5vmDFIYj1mr1WYfrHPovA9VVOqbC7e/1rS9ZlrAVDYHig5WB0oPtBI0TNrUiC5yhP9jeF4X8NPcWfopoY48XT39PjjXeF0vWkZqOjd7LJYrmGasHPCCJbHwhS9/F8M4s8baid764Xi0Ilfp5voorpJfn2wwx/r3l77TwZUvR+qajXVn8PnvocYfXYH6k2ioOaCpaIdf11ivDcayyiMVudsOYqFb60gARJYHG9DbqQFmSVNjaO3K2NpAeK90ZCqtgcrjkP9aUCXp0moetDFEeRXnYCKXhm+uTW0CkBFu4JlxzZkFlbASz4CQGQVBFeEwZm8geyiMuRVntzsL3oXV+YMkvjRsydC1U+lhwZsWXgHb+oWVAEzIwvzyVlk5igsi7DymmHlHsFQR50rjl+981Jy1Fw6Gu0ObTtnU+cgs28AKgDiy+Awpj5OACBAhZ/qh2HOo6i+NeA73jUAML4/qWux8mt6NjW1w599CS9xb0mSEqQBEDAtwqALUmBaG5FV3oYPnTHMjAwetlWksyByaukxQg2wQ9FlccaK/OXA3/uAEUDp3rNIDQ1ctSk6kHh1/jRFoaL4M4snEMeD73gQx4M4PsT1IZ5AfYH68tZY7zv/ApRMY9mnuVMvAAAAAElFTkSuQmCC") no-repeat scroll 0.8em center #FFEEEE; + padding-left: 38px; +} + +.message, #menu p.message { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKfSURBVDjLpZPrS1NhHMf9O3bOdmwDCWREIYKEUHsVJBI7mg3FvCxL09290jZj2EyLMnJexkgpLbPUanNOberU5taUMnHZUULMvelCtWF0sW/n7MVMEiN64AsPD8/n83uucQDi/id/DBT4Dolypw/qsz0pTMbj/WHpiDgsdSUyUmeiPt2+V7SrIM+bSss8ySGdR4abQQv6lrui6VxsRonrGCS9VEjSQ9E7CtiqdOZ4UuTqnBHO1X7YXl6Daa4yGq7vWO1D40wVDtj4kWQbn94myPGkCDPdSesczE2sCZShwl8CzcwZ6NiUs6n2nYX99T1cnKqA2EKui6+TwphA5k4yqMayopU5mANV3lNQTBdCMVUA9VQh3GuDMHiVcLCS3J4jSLhCGmKCjBEx0xlshjXYhApfMZRP5CyYD+UkG08+xt+4wLVQZA1tzxthm2tEfD3JxARH7QkbD1ZuozaggdZbxK5kAIsf5qGaKMTY2lAU/rH5HW3PLsEwUYy+YCcERmIjJpDcpzb6l7th9KtQ69fi09ePUej9l7cx2DJbD7UrG3r3afQHOyCo+V3QQzE35pvQvnAZukk5zL5qRL59jsKbPzdheXoBZc4saFhBS6AO7V4zqCpiawuptwQG+UAa7Ct3UT0hh9p9EnXT5Vh6t4C22QaUDh6HwnECOmcO7K+6kW49DKqS2DrEZCtfuI+9GrNHg4fMHVSO5kE7nAPVkAxKBxcOzsajpS4Yh4ohUPPWKTUh3PaQEptIOr6BiJjcZXCwktaAGfrRIpwblqOV3YKdhfXOIvBLeREWpnd8ynsaSJoyESFphwTtfjN6X1jRO2+FxWtCWksqBApeiFIR9K6fiTpPiigDoadqCEag5YUFKl6Yrciw0VOlhOivv/Ff8wtn0KzlebrUYwAAAABJRU5ErkJggg==") no-repeat scroll 0.8em center #EEFFEE; + padding-left: 38px; +} + +a[href$="sql="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHGSURBVHjaxFPNLkNREP5aB6WhaKLSVtKFiIUqK1sLT2DhTXgDL2FlxSOw8FOLRiyQWhDRiKSEhKQJou49P9fMnFsLsevCJCcz594z3/m+mTmJKIrQjSXRpXUNoGqbm39qcMbAkbyIvbVwYQhD3tIeWsOQ1+QVH86Xyz+JXJPIOb9iAI4ZpOMd/yN/vb/vAdiC93cP0El2dNA6z4RjYyW2MaPU0BB0u+0BOGGsVML49LSA3J+cYDCblb0l6jeHBwg/26isrOB0a8uzYBlBgKShgD8M53J4aTTQqFaRSCYl+WxnG83zcxTmKpKg+vtFu9W8NDQDMCXW+VivYyAzjKmlJahUSpiYUKPVbCKTz0sCGzOyOpBLzdcXlCMdDDIxO4vboyoyhQIKlYocLi0uIjczIyBcA98dYqx9NywxUEyDi/P29IyF1VU5dFeroS+dRnF+Xvajk5N0ayjx8tq6+FuSyiwUF4LRHi/reLg4o9ijs6xG9RjWGowUi/h4fcXexoa0L4oc0mNZuVgFzID09VKBnFXoUb7Pnb5zQrvVovpkZC4QzwfiN6QM1eBqdxcmnq6IAA395Mlz8eTxTZwg/pcl/v01fgswAESqYZbsIsnLAAAAAElFTkSuQmCC") no-repeat scroll left bottom; + padding-left: 22px; +} + +a[href*="dump="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJrSURBVHjajFPPaxNREP72V8ymTbGQbRB/IT0otdV6CcWTgqCoUFQQEXoSEQ/+AypK755E1KsULIpGgw1F9KC22lgstFgQLdoWhSab2PRHTNrs7nvObGhSsRa/ZXjv7c6b+eabWUVKiX9AJQuRRci2k+260N91VwgJIQSEV1mVnjf5axTjvCfFFn7hCcBlBzJNVRA0gAZTQ1ODgXC4gDtjV9AW2QNFUTA0/Q66kPLSqVg4shYF8vEdKQ7mln+i+/VVRM0oFpbmETLq/SS6J4R/OfHtHmV24XouHFo94REDAyE9hMZgBMkvT2GZFqxQE6by0/g4P74SoKLB2ZZzWA8ffqRQLBcxNTuFjRTwxpmbfad7Oo/rHhdN6B20/6JvaKyBCnODhqNbL+PRxHXUGXWINV5kl9TDrkQct/pnZKHkyPsDGcl4MJiWq5Ecsf84LxTL8nbyK2+Pke3XHWJAQkLXgMdDNjRNRTxlQ6UmakRD0vN8NEd7EBsFO6Impu1fzGCCrOSXwCro5HEiZiExnEVnrKlaypNhG4fba02aTC8ik1/ibZrM9RlIkkGnjH0jWWJQWRn8TpLI8fcZ6MSA1WrZFERx2eHPTEPqjksBqASDLh7ZZ+HlWA6H9tYyvhjNomNnI8Km7p8/f5+HGdB46/lJeOoYPHV8mbGy8gA59HngU74asNkKYKVzlQCuW9GA6B5si+DVeA4HWmsM4qksTnZY1TMz0NRauysaUAmt2+oxM1tCM6k8mS74WXjIdm8O+JdWg36oKgXqgnzb3TvRXvZEneN6YPNIFw7MY70W5haXnlUHbp3f+b/wW4ABAAtWTLcKdqLcAAAAAElFTkSuQmCC") no-repeat scroll 2px center; + padding-left: 22px; +} + +a[href$="dump="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHzSURBVHjajJPPS+NQEMcnaaxpdWsp6Q8vtWtdkIo9+B948SjIgruCUg8F/wGP/glePe5JcBehwl4qePGm0J6KQj30UBHEzaFLUromTfPizJMnrxhhB4bJvDfzme97SZQgCOB/be98J2AsAMYYMP81KjKg0WhMYljHtS30RSz4gjkGdot559F7OLt8vvi1bJRBURS4vr8CTTQ3m80SFv1MpVJlwzBA13XuNGUwGKyY1p+Vk9aPzWw8C7ZjQXximu+9ATA5KhQK5Uwmw+nCIpEIJBIJOLjah3Q8w7379x5urFsOUEUhTl/C6R+ef35mARzPhW6vC+q/iHvyvaYwXwIQje6j1+tBv98H13VhNBpxxyPA5tw2TI50MPQsrMbXbOo53fmtaJIC7iSZAMPhkOe+73MA5Ruz3yCfz9NlvykLBUSjUR41TQPP8zhE7JNSyj8E0CbJpkiXKRoIRFABeQcQd0DFwlVV5evUTFBZRSiATEwnp4lCAa0LI2AoQC4WimRl4qgyYOw12rYNyWSSX6L4mKiBnukDK5VKYJrmmBpZwW6r1TotFotTuVyOQwQgnU7zV9npdKDdbj+hgnXRN/Yz1ev1zwg6QP+KU2disRiXblkWOI7zhJOPce+wWq2aoQDZarXaJ2xYQGfod5VKxQ2rexFgAI4OiAKxKkWeAAAAAElFTkSuQmCC") no-repeat scroll 2px center ; + padding-left: 22px; +} + +select[name="db"] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC") no-repeat scroll left center white; + padding-left: 16px; +} + +select[name="db"] option { + padding-left: 18px; +} + +#menu p a[href*="&select="] { + display: inline-block; + margin-right: 8px; + overflow: hidden; + padding-left: 0; + text-decoration: none; + width: 16px; + height: 16px; +} + +#menu p a[href*="&select="]:before { + content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII="); + padding-right: 5px; + display: inline-block; + margin-top: 2px; +} + +#menu p a[href*="&table="], #menu p a[href*="&view="] { + display: inline-block; + text-decoration: none; +} + +a[href*="&create="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ6SURBVDjLpZNZSNRRGMV//2XGsjFrMg2z0so2K21xIFpepYUiAsGIICLffI8eWiBBeg3qQV+KwBYKLB8qpHUmrahcKLc0QsxldNSxdPz/79LD1ChBUXTh8sG93POdc75zDa01/7NsgGvPR09rzQmpVZZSCqlAKIWUCqk0QqoZWyKFRir1uvxIbsAGUFqXHQqkpP1L57M3Pm5MMJBKpQHUdF9BKIGQAlcJXOlOVykSdye3leO6MmkGQNyHw+uO/1X3bzGBK+S0B1IqAKqDg3986HeCZPffwvJtoNT7lOZLvUdtAPEDAKBkRzo3QwMUb89InN1uGGD3spdE214xe8MRUnM2MfppNW0Pqy7YAK5UKK2xLbhdP4hlmdxpGMQwwQT8ziNiI534c7cT6WrFazikzF2Eb8HS1IQEDdiWwcHAQmpehTkQSAcgNvSMiYFW5uUUMdV3HW+ywefGNqITJsbUUL75k4FWYJtQ+yaMZcXrk1ANk/33mbdiD7EvlRieETy+FJLkMFcjRRSW3emIAwiF1hqPBfu2LGSWbbA1uZ41SfWkrtxPrPcypsfFiWYzFGzGKTjFV28WEJeIUHETLdOgrmkI1VdHpCdEet5enP4qLK9mKrqMgedv6cyrAP+qxOTiUxAi7oEJi8frELoFoTLpa7nI/HQvscgSRt+0kV1SSW7qYtp7xrBMphm4Mi5h/VIfTcEq1u0oJaknSEdNiMYHET7UvcMpPEN31Ed7zxgASmk1I0g6dK66s8CRak5mVxjnfS05+TsZCw/T9baTx1nnGb47DrQksjE6HrsHYPz6nYt3+Sc3L8+wA2tz0J6pF5OD4WP7Kpq7f5fO79DfSxjdtCtDAAAAAElFTkSuQmCC") no-repeat scroll 2px center; + padding-left: 22px; +} + +a[href$="&create="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIpSURBVDjLpZNPSFRRFMZ/749/Kt3IqFTSRoSMmrGIYTTbpEJtjBCCok1Em9JVG1dRC8FFEES5aGFEgRRZWq1iLKKxBiNqLDcltQgmHR9hY6LOu+feFm+YGVsZXbh8nHO53/nud8+xjDH8z3IB7r5avGgMZ8XoBq01okFpjYhGtEGJLtmCKINo/XbgVFPUBdDG9PVEq0P/UvnSvdlwQYFoHQIY/3obpRVKFL5W+OIXUVThrL91AN+XihKCwIeTu85sqPryqsJXUvRARAMwkshsiKB7fw25UgKVJwA40V7H/cl5jh+oL+RGk/P0xIqxl11dr8AXjTYG14HRNxkcx+ZhMoNlg52/ND6VAWMoc6F5+2Zy/l9PMIDrWByL1jI+tcDRaN06BaXxbDqLUnq9AqPBteHpuwUcJ0AIcgBXH93h+/wEyyuLrPk5cmv7gNY8gdIYYyhz4PDeWuIpj85IsS2ujQ2zJAk6DkZpqGnixcwYyU+PifUOX7Eh6DoAx7aIpzwA4imPeMrj+bTH+88PaNkZQWwhsrULsXxie9oAzgcESgUe2NAZCeE6AXZGQhwKh/Cyc5RZVXQ39wFwoeMmjXVhgMqiB8awe0cVP36u0Fi/iW9zvwuzkF3+xUz6Nal0gv6uWww+O02lUwGwmv8FM3l55EtLTvQWXwm+EkRpfNEoUZRXHCE5PUFbuJ0nH4cot1wSH14C3LA2Os6x3m2DwDmgGlgChpLX0/1/AIu8MA7WsWBMAAAAAElFTkSuQmCC") no-repeat scroll left center; + padding-left: 22px; +} + +a[href*="&default="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ7SURBVHjabFPfa1JhGH6OR88odSKDaTEzS9i0jejXBtVuBzGooOgqoquu+heii27aRUTUaKx1nbAYDCqqm4raoBZDZrqhaCw31janm3r0eOb8+t4PFXW98Jz3O985z/P++j6JMQZJkroAODhk/Mfs/nZrJpLN8eUGxx/OqdQ/kgC3M7qub5fL5T1ujHtGvrYmlEolFggEnvB/j3IYiCe4VYF+IheLRaZpGiNPyOfzLJfLsXQ6zVKZDZZKpfaJkEkkQNEoCs9EeBJSVVUIZDIZkQ3tFQoFNjk5KURE+VWBczyD75VKBaFQCLu7uwJ8T4DWQ0ND1CtUewZZlgc4b65JQKQjSfXe8KggUfIEbf0zMnOvIFv6oKa+gBVWbhsbu03kSCRSj1xDTcSHWTj7bsLmOYXt391Y+jgx0iRAUf1+f+uEBFmNP4TZegHp+CIUSYe13QlLxxGbsTE6WSwWE4RaZIJbmYL9+CWU1gJQDkpYDi5BK5R2VDU3YGw9NF6vt+k9u3gPNu9laKtjMChlmCxumNkKnk0v3B19F48aG9OlLJLJZL1m685LdPZe5eTnMJjK0LMepGaDcA6PYPRWb5R4hsYSSMTlcuGAxhuZGEfniWHofycgKwylrBubM/M4fG0MbY6eeob7pvDz/TgsUhJlfj3WQk9h71SgpV3Y+hGGfP4+TLZDTSUaGodAj+Vfr+G/eAdtyW+ITs8g+CGN6Kcguq48gtt3thaoUi2b0XkmIi+7UiQfS2xCD7+B5+QgzOZurIcS8N14DKXDIzIkMrcCTVeIVZvnql5nw/VB+9fTxxxyf48H+T114cVU+MHb+a3VlmEReYNzk/8EGADOaaVGDf2TtwAAAABJRU5ErkJggg==") no-repeat scroll 2px center; + padding-left: 22px; +} + +#content p a[href*="&select="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=") no-repeat scroll 2px center; + padding-left: 22px; +} + +#content p a[href*="&page="] { + background-image: none; + padding: .2em .5em; +} + +#content p a[href*="&edit="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJvSURBVDjLpZPrS5NhGIf9W7YvBYOkhlkoqCklWChv2WyKik7blnNris72bi6dus0DLZ0TDxW1odtopDs4D8MDZuLU0kXq61CijSIIasOvv94VTUfLiB74fXngup7nvrnvJABJ/5PfLnTTdcwOj4RsdYmo5glBWP6iOtzwvIKSWstI0Wgx80SBblpKtE9KQs/We7EaWoT/8wbWP61gMmCH0lMDvokT4j25TiQU/ITFkek9Ow6+7WH2gwsmahCPdwyw75uw9HEO2gUZSkfyI9zBPCJOoJ2SMmg46N61YO/rNoa39Xi41oFuXysMfh36/Fp0b7bAfWAH6RGi0HglWNCbzYgJaFjRv6zGuy+b9It96N3SQvNKiV9HvSaDfFEIxXItnPs23BzJQd6DDEVM0OKsoVwBG/1VMzpXVWhbkUM2K4oJBDYuGmbKIJ0qxsAbHfRLzbjcnUbFBIpx/qH3vQv9b3U03IQ/HfFkERTzfFj8w8jSpR7GBE123uFEYAzaDRIqX/2JAtJbDat/COkd7CNBva2cMvq0MGxp0PRSCPF8BXjWG3FgNHc9XPT71Ojy3sMFdfJRCeKxEsVtKwFHwALZfCUk3tIfNR8XiJwc1LmL4dg141JPKtj3WUdNFJqLGFVPC4OkR4BxajTWsChY64wmCnMxsWPCHcutKBxMVp5mxA1S+aMComToaqTRUQknLTH62kHOVEE+VQnjahscNCy0cMBWsSI0TCQcZc5ALkEYckL5A5noWSBhfm2AecMAjbcRWV0pUTh0HE64TNf0mczcnnQyu/MilaFJCae1nw2fbz1DnVOxyGTlKeZft/Ff8x1BRssfACjTwQAAAABJRU5ErkJggg==") no-repeat scroll 2px center; + padding-left: 22px; +} + +#content p a[href*="&table="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJcSURBVDjLpZPtT5JhFMafrW997I9rscA+FFu2QRurtlw5cQ4InLpwBogIPNFSiNJ4C+JVkj0QTBHQKFPQlJfwlanY1tXz3ARkn2jd27Wz++yc33XOvd0UAOp/RNGR/X5zeH9rOlTDVKAK3fsqJrxlqN27GHPuYHh+G4rXRQzZNjEws47Hli/oo/PxNsAU3qvWT3/gX3TPuHrWBhiC30nSktXDtKLB1NI4NKkxqBMqjDByPFkcxNBCPwbCfXgUeEBq705m0AZM+qsk2e3hau88W+4ANOy+XPLFQrkrcbW31KkOYJx9rBaAOzPR0gVHW6x593q9cDgcqB6e4sZoogMYdXzD0ck5ZhfLsHGKVfAqVoadKcMdzcLr82PuwwZCoRACgQCWVzdhoK2gaVpDAMNzWzhkAXamQpze/I4t13w+j2AwiFwuh7W1NXg8HmQyGSgUCshkssuU3F7AQf0c84kK3n68KFc4hXQ6DavVCqlUCqVSSdaIx+NQq9UGMsHg7Ab2jxtwp5rOvqUqia3CUqnEObWn0mp1KBaLcLlckMvloPpfrhOAl230/SGLxQK3241CoQC9Xg9nskKk1emQzWZZkBZCoRBU3/NP2GMBgXTTObjSjI1GA8lkEgzDwO/3E4iObXY6nYhEIhCJRHoWcIW6b1pF7egMlYNT7NROUKzU8XX3GJ+3D2E0GgmAm4Zbh2s0mUyIRqMcAGKx+BIlMeSiYu1K/fbEMm4+TaFnJIHrSgZX5TFIZNPo7e1Fj9QOs9kMlUqFaw9pCASCnzwe7x15xG6/rUQiAZ/Px9/5XyhZOMVGKlOdAAAAAElFTkSuQmCC") no-repeat scroll 2px center; + padding-left: 22px; +} + +#content p a[href*="&database="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKRSURBVDjLhVNLTBNRFD3TTju1FCcBaxuaQEr94ydiZIHGpcFISBOi0YREZWHCVoyRxKUxxq0LXcACQyLsjO6KjSEiDfHDz0S0CLSxlFKd2g7MTDudGd+bMAQCxJucuXfuu+fcO/PeYwzDALVoNMqRuI3guq7rR4g/SEBC/Svxc8T3EUTD4bCGTcZQAUI+RvxLr9d70u/3o6KiAm63G3Qtn89DFEUkk0lks9lRkrvW3t6e2lCgRZFI5F0ikaDtjN1MVVVjYmLCGBoa6qccC7Z1kQafz4f/WSAQAGlyaXOOpQ+SNNUymQxcLhc4joPD4TBzkiRBEASkUimEQiGzdlcBlmWRy+WgKIr5Xi6XUSgUUCwWzTVN+IAzeOOde71orP0eAaOkbrDWf6Cw2+3mBLSYgny3KULXPOUY2BUB/hMd4IOn8XfhMGYjvU+2TECLLRLDMNA0zYw5JYa6Ghke/hyEn9/gZEqo3OuHp7qW3yJgESjoNPSdlb8gWCOCr29BMT0Ip5tBYnIWqlL6o8irzVsEaHcKSqQCen4cweok+FAblNRz2JxlODx1cEkzGWmVbTl7Z/jHhgCF1Z3GYjIKf+U8+ANhQn4Gm6OMUiGI9MhHg5Gl1sbu8UnKNc8B7Ui3ipxEcwvlpVFw6hz2N1xGabkXdqeBYqEOmfefEZWac4e6xz9Z22hbn+BmLBZbi8fjEBdG4NF/QdUDSM88hQ4FawKJR6cxLDZl86qzZdtdoDYwMBAkQg/2LL/ovNLVh++Dd7G0OAau9hTkrKgnnE39GW3f/Z6enpUdBSx7ePu4eq+zi4VNw+TbV0gsxFd5b9X5i4+mpnY63tsErl6okhvrfWzT0SAMR3FMXsnean08Pb/b/fgHqpjCspi90kkAAAAASUVORK5CYII=") no-repeat scroll 2px center; + padding-left: 22px; +} + +#content p a[href*="&schema="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFOSURBVDjLtVK7SgNRED0b9iuM2lr4QK1DQIyk0FZsJAj+gH+ilRZb2NjaRHTLmA9QFKz9huzm7t37Hu+u7IJgQjR6YLjDzOXMmcMERIR5EE5qXA4z4sqACYWEC5wfLQXf/WtMIuDSoL0A7DZDjBj/uYI0l8jzEEJYJMkvCEZM4PqZIxlzpGk+kSCY18TGtGYcx9Tv96dOqBUMBgNyzsFaC621312Ac+59yJFlGRhj5VvVoigKvniglEK32w1mkd3r9ejPPAjOhqdknYX18p1/rzo3pYqTh0OSRkJI5UMgPn4s61sX66SkhtEGcISGsQad5gH2FvehfV5BaIF2cwet5RZyKeu68pe5ubKG7dUNP5AQGltMN57Mosgr5EIiVQmYGvtc1PVicqHY+dXpk8Dg7v22XKFo1ARe9v1bDOlXKKKCs4Sn1xdU1v3vIc2CD3bN4xJjfJWvAAAAAElFTkSuQmCC") no-repeat scroll 2px center; + padding-left: 22px; +} + +#content p a[href*="&sql="] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ5SURBVHjapFNLaxNRFP4mnZmQZtKYpJ2I8ZE0NSbSWKpgBYNUhIJQUDddCaILwb34C0RcCi60vpa14sZFoSjxUWxTFEubFkxf9kFS+7Jp0yQmM5mH905SF9pSwQt3vnPnnvPNd86cA13Xsds+23XKsdMdQx//s0z/6hi54he3e8/0d3ZuK0FTFGhUJkVVhSbLUAiq5IxSCQrBEkGWOu8Lh38HGrlpWnlXCKhNSbZQo3cEE9FomYAuKZstE2wFa8RR1cpKqK2o4JhxmLVJVAlh5Df6IFj5MgENcHq9EAMBg2RucBDVLpdxVon0iXdvIf8sQHRIsNReht3XjI3ZI8iuPAOrkDyorBq3G6vT08ikUuAsFiN46HkXXL56eI41QV1/BMF+GulvCfCMDFvNXtSIHrC0KDTPhXgc7lAQdQ2thk2XIpewnkzCJvTA4T8PabEbfDWD+ZFxyEUdX94sw6QVCkZlxWAQU+8/YGZgALV+v0HgbWmBNzQMR0M7it8fg+HWwQk2cLkkcvJh5NNFsCVJMgq1ubiE5o4OI5CS8FYrya8b9saLKC48gIlTIG/6sBaLw3PpHrTEMrSXr4kPIaAKFkbjSA0PEVuFlB+DO8Ah2HoB8tITVPE6iplDWOn7jLn0CSQevoDV6TI+zEpUASkkZzaTYrLIrH3C/qMCFEbE4th9OEQexfQBrPYP44d+DuY91eBp+1dGgFVIDb729kKpdJfQtIy2yFNMdN/E5McYzAebUEhOYjZuQXaj5+9W/nOYbl9vLN26doOFScVI9BXmZ6dy9jpnpO1O5dfsRtBxxlk4Xu9mT4Z80DkpVlhZvdp+d3RmpyH7JcAAnHiAVYWMsdkAAAAASUVORK5CYII=") no-repeat scroll 2px center; + padding-left: 24px; +} + +table tbody input[type="checkbox"] { + display: block; + float: left; +} + +table a[href*="&edit="][href*="&where"] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFUSURBVDjLrZM/SAJxGIZdWwuDlnCplkAEm1zkaIiGFFpyMIwGK5KGoK2lphDKkMDg3LLUSIJsSKhIi+684CokOtTiMizCGuzEU5K3vOEgKvtBDe/2Pc8H3x8NAM1fQlx4H9M3pcOWp6TXWmM8A7j0629v1nraiAVC0IrrwATKIgs5xyG5QiE+Z4iQdoeU2oAsnqCSO1NSTu+D9VhqRLD8nIB8F0Q2MgmJDyipCzjvYJkIfpN2UBLG8MpP4dxvQ3ZzGuyyBQ2H+AnOOCBd9aL6soh81A5hyYSGWyCFvxUcerqI4S+CvYVOFPMHxLAq8I3qdHVY5LbBhJzEsCrwutpRFBlUHy6wO2tEYtWAzLELPN2P03kjfj3luqDycV2F8AgefWbEnVqEHa2IznSD6BdsVDNStB0lfh0FPoQjdx8RrAqGzC0YprSgxzsUMOY2bf37N/6Ud1Vc9yYcH50CAAAAAElFTkSuQmCC") no-repeat scroll right center; + padding-right: 18px; +} + +table input + a[href*="&edit="][href*="&where"] { + clear: right; + display: block; + float: left; + line-height: 15px; + margin-right: 8px; + overflow: hidden; + padding: 0; + text-decoration: none; + width: 16px; +} + +table input + a[href*="&edit="][href*="&where"]:before { + content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFUSURBVDjLrZM/SAJxGIZdWwuDlnCplkAEm1zkaIiGFFpyMIwGK5KGoK2lphDKkMDg3LLUSIJsSKhIi+684CokOtTiMizCGuzEU5K3vOEgKvtBDe/2Pc8H3x8NAM1fQlx4H9M3pcOWp6TXWmM8A7j0629v1nraiAVC0IrrwATKIgs5xyG5QiE+Z4iQdoeU2oAsnqCSO1NSTu+D9VhqRLD8nIB8F0Q2MgmJDyipCzjvYJkIfpN2UBLG8MpP4dxvQ3ZzGuyyBQ2H+AnOOCBd9aL6soh81A5hyYSGWyCFvxUcerqI4S+CvYVOFPMHxLAq8I3qdHVY5LbBhJzEsCrwutpRFBlUHy6wO2tEYtWAzLELPN2P03kjfj3luqDycV2F8AgefWbEnVqEHa2IznSD6BdsVDNStB0lfh0FPoQjdx8RrAqGzC0YprSgxzsUMOY2bf37N/6Ud1Vc9yYcH50CAAAAAElFTkSuQmCC"); + padding-right: 5px; +} + +table input + a[href*="&edit="][href*="&where"]:hover { + background: #FFC; + color: white; + margin-left: 19px; + margin-top: -1px; + overflow: visible; + padding: 1px 2px; + position: absolute; + width: auto; +} + +table a[href*="&clone="] { + clear: right; + display: block; + float: left; + line-height: 15px; + margin-right: 8px; + overflow: hidden; + padding-top: 0; + text-decoration: none; + width: 16px; +} + +table a[href*="&clone="]:before { + content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADHSURBVCjPdZFNbsIwFAa/5B5FuQPCOQ9HQuqCq3SHUAtrrgFCSKQk8Y80XTjYJqiajRfj55GftNBKJtGoRiXSytlAZORzM1ckExjouHEm0LPdqHkTRnruXAgEPGpVq1JVCJ6RB3dOfHFEa7W5RzLx3kjPDse8ZxKisue9JwkByzevPQGZQnD8kHuunEvB43EcyD0dt/kEzzGdLD2/k9Ckb261zs9ZhiggVRO12jzN4Z5C+tQq90T+ETK20/J1tU2xeCOjpT7+APfbTaDnTb/mAAAAAElFTkSuQmCC"); + padding-right: 5px; +} + +table a[href*="&clone="]:hover { + background: #FFC; + border: 1px solid #CCC; + color: white; + font-size: .9em; + margin-left: 42px; + margin-top: -2px; + overflow: visible; + padding: 1px 2px; + position: absolute; + width: auto; +} + +input[name="delete"], input[name="drop"] { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC") no-repeat scroll left center; + border: none; + cursor: pointer; + font-size: .9em; + padding: 1px 5px 1px 18px; + color: #999; +} + +input[name="delete"]:hover, input[name="drop"]:hover { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==") no-repeat scroll left center; + color: red; +} + +#logout { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat scroll left center; + border: none; + cursor: pointer; + margin-left: 6px; + overflow: hidden; + text-indent: 18px; + width: 16px; +} + + +/* paginator */ +.pages { + margin: 1em 0; + font-size: 90%; +} + +.pages a[href*="&page="] { + margin: .2em; + padding: .2em .5em; + border: 1px solid #9AAFE5; + text-decoration: none; +} diff --git a/public/bio.png b/public/bio.png new file mode 100644 index 0000000..3a4a20d Binary files /dev/null and b/public/bio.png differ diff --git a/public/css/bootstrap-tagsinput.css b/public/css/bootstrap-tagsinput.css new file mode 100644 index 0000000..b31f01c --- /dev/null +++ b/public/css/bootstrap-tagsinput.css @@ -0,0 +1,55 @@ +.bootstrap-tagsinput { + background-color: #fff; + border: 1px solid #ccc; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + display: inline-block; + padding: 4px 6px; + color: #555; + vertical-align: middle; + border-radius: 4px; + max-width: 100%; + line-height: 22px; + cursor: text; +} +.bootstrap-tagsinput input { + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0 6px; + margin: 0; + width: auto; + max-width: inherit; +} +.bootstrap-tagsinput.form-control input::-moz-placeholder { + color: #777; + opacity: 1; +} +.bootstrap-tagsinput.form-control input:-ms-input-placeholder { + color: #777; +} +.bootstrap-tagsinput.form-control input::-webkit-input-placeholder { + color: #777; +} +.bootstrap-tagsinput input:focus { + border: none; + box-shadow: none; +} +.bootstrap-tagsinput .tag { + margin-right: 2px; + color: white; +} +.bootstrap-tagsinput .tag [data-role="remove"] { + margin-left: 8px; + cursor: pointer; +} +.bootstrap-tagsinput .tag [data-role="remove"]:after { + content: "x"; + padding: 0px 2px; +} +.bootstrap-tagsinput .tag [data-role="remove"]:hover { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.bootstrap-tagsinput .tag [data-role="remove"]:hover:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} diff --git a/public/css/chilledblue.css b/public/css/chilledblue.css new file mode 100644 index 0000000..7cd06d8 --- /dev/null +++ b/public/css/chilledblue.css @@ -0,0 +1,232 @@ +/* Scrollbar */ +::-webkit-scrollbar-track-piece { + background-color: #1a1f22!important; +} + +/* /Scrollbar */ + +body { + background-color: #171d21; +} + +.navbar-inverse { + background-color: rgba(33, 41, 47, 0.74); +} + +.comments { + background: rgba(33, 41, 47, 0.71); +} + +.panel.panel-default { + border: 1px solid #131619; + background: #21292f; +} + +.onclick-menu-content { + border: 1px solid #131619; +} + +.tagtest { + background: rgba(33, 41, 47, 0.71); +} + +div#tag-display { + background: rgba(33, 41, 47, 0.71); +} + +.label-default { + background-color: #21292f; + border: 1px solid #1fb2b0; +} + +.modal-content { + background-color: #21292f; +} + +.login_wrapper { + background: #1c2125; +} + +select.form-control, input.form-control { + background-color: #21292f; + border: 1px solid #131619; +} + +.btn-primary { + background-color: #21292f; +} + +.btn-primary:hover { + background-color: #142121; +} + +span.addtagsy>a:hover { + background: #33414c; +} + +.popover { + background-color: #21292f; + border: 1px solid #131619; + padding: 0; +} + +.popover.top>.arrow:after { + border-top-color: #131619; +} + +.popover-title { + margin: 0; + padding: 8px 15px; + font-size: 14px; + background-color: #131619; + border-bottom: 1px solid #0b0b0b; + border-radius: 0; +} + +.video-js .vjs-control-bar { + background-color: rgba(33, 41, 47, 0.93) !important; +} + +.thumbnail { + background-color: #21292f; + border: 1px solid #131619; + border-radius: 0; +} + +.caption small { + background: #142121; + color: #d000ff; + font-family: VCR; + text-shadow: 0px 0px 5px #d000ff; + border: 1px solid #1fb2b0; +} + +.box { + background: rgba(33,41,47,.74); + border: 2px solid #131619; +} + +.navbar-fixed-bottom { + background: #21292f; +} + +.bootstrap-tagsinput { + background: #21292f none repeat scroll 0 0; + border: 1px solid #131619; +} + +.panel-default>.panel-heading { + background-color: #21292f; + border-color: #131619; +} + +.list-group-item { + background-color: #131619; + border: 1px solid #21292f; +} + +.pagination>.disabled>span, .pagination>.disabled>span:hover, .pagination>.disabled>span:focus, .pagination>.disabled>a, .pagination>.disabled>a:hover, .pagination>.disabled>a:focus { + background-color: #131619; + border-color: #282828; +} + +.pagination>.active>a, .pagination>.active>span, .pagination>.active>a:hover, .pagination>.active>span:hover, .pagination>.active>a:focus, .pagination>.active>span:focus { + background-color: #142121; + border-color: #1fb2b0; + color: #1fb; +} + +.pagination>li>a, .pagination>li>span { + background-color: #131619; +} + +.blah { + background: #21292f; + border: 1px solid #131619; +} + +#dragndrop { + background-color: #21292f !important; +} + +.profilheader { + background: #21292f; +} + +table { + background-color: #131619; +} + +.table-hover>tbody>tr:hover { + background-color: #21292f; +} + +a.list-group-item-info, button.list-group-item-info { + color: #fff; + background: #ff005d; +} + +a.list-group-item-info:hover, button.list-group-item-info:hover, a.list-group-item-info:focus, button.list-group-item-info:focus { + color: #fff; + background-color: #2f3f4b; +} + +.dropdown-menu { + border: 1px solid #131619!important; + padding: 5px!important; + margin: -15px 15px 0!important; + border-radius: 0px!important; + background-color: #21292f; + min-width: 100px; +} + +button.w0bmcustom-css { + width: 100%; + padding-bottom: 5px; + background: #232222; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #adadad; +} + +button.w0bmcustom-css:hover { + background: rgba(84, 84, 84, 0.5); +} + +button.chilledblue-css { + width: 100%; + padding-bottom: 5px; + background: #142121; + border: 1px solid #131916; + margin-bottom: 5px; + color: #adadad; +} +button.chilledblue-css:hover { + background: #183333b8; +} + +.suchleiste { + background: #21292f none; +} + +button.epilepsie-css { + width: 100%; + padding-bottom: 5px; + background: #ff0000; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #ffffff; + font-weight: bold; + text-transform: uppercase; + border: 1px dashed yellow; +} + +button.epilepsie-css:hover { + background: rgba(84, 84, 84, 0.5); +} + +.toggo { + background-color: #21292f; +} diff --git a/public/css/clippy.css b/public/css/clippy.css new file mode 100644 index 0000000..0284eda --- /dev/null +++ b/public/css/clippy.css @@ -0,0 +1,62 @@ +.clippy, .clippy-balloon { + position: fixed; + z-index: 1000; + cursor: pointer; +} + +.clippy-balloon { + + background: #FFC; + color: black; + padding: 8px; + border: 1px solid black; + border-radius: 5px; + +} + +.clippy-content { + max-width: 200px; + min-width: 120px; + font-family: "Microsoft Sans", sans-serif; + font-size: 10pt; +} + +.clippy-tip { + width: 10px; + height: 16px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAMAAAAlvKiEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRF///MAAAA////52QwgAAAAAN0Uk5T//8A18oNQQAAAGxJREFUeNqs0kEOwCAIRFHn3//QTUU6xMyyxii+jQosrTPkyPEM6IN3FtzIRk1U4dFeKWQiH6pRRowMVKEmvronEynkwj0uZJgR22+YLopPSo9P34wJSamLSU7lSIWLJU7NkNomNlhqxUeAAQC+TQLZyEuJBwAAAABJRU5ErkJggg==) no-repeat; + position: absolute; +} + +.clippy-top-left .clippy-tip { + top: 100%; + margin-top: 0px; + left: 100%; + margin-left: -50px; +} + +.clippy-top-right .clippy-tip { + top: 100%; + margin-top: 0px; + left: 0; + margin-left: 50px; + background-position: -10px 0; + +} + +.clippy-bottom-right .clippy-tip { + top: 0; + margin-top: -16px; + left: 0; + margin-left: 50px; + background-position: -10px -16px; +} + +.clippy-bottom-left .clippy-tip { + top: 0; + margin-top: -16px; + left: 100%; + margin-left: -50px; + background-position: 0px -16px; +} + diff --git a/public/css/epilepsie.css b/public/css/epilepsie.css new file mode 100644 index 0000000..64712f6 --- /dev/null +++ b/public/css/epilepsie.css @@ -0,0 +1,98 @@ +body { + animation: epilepsie 0.1s infinite; +} + +@keyframes epilepsie { + 0% {background:red;} + 25% {background:yellow;} + 50% {background:#1FB2B0;} + 75% {background:#23dd06;} + 100% {background:red;} +} + +.embed-responsive-16by9 { + animation: megakrebs 0.1s infinite; +} + +@keyframes megakrebs { + 0% {filter: invert(50%)} + 25% {filter: hue-rotate(90deg)} + 50% {filter: invert(100%)} + 75% {filter: hue-rotate(90deg)} + 100% {filter: invert(50%)} +} + +.navbar-inverse { + animation: megakrebs 0.1s infinite; + animation: epilepsie 0.1s infinite; +} + +.navbar-brand > img { + animation: megakrebs 0.1s infinite; +} + +a { + animation: swkrebs 0.1s infinite; +} + +@keyframes swkrebs { + from { color: #f00;} + to { color: #0098ff; } +} + +span.videoinfo { + animation: megakrebs 0.1s infinite; +} + +#sidebar { + animation: megakrebs 0.1s infinite; +} + +.dropdown-menu { + border: 1px solid #131619!important; + padding: 5px!important; + margin: -15px 15px 0!important; + border-radius: 0px!important; + background-color: #21292f; + min-width: 100px; +} + +button.w0bmcustom-css { + width: 100%; + padding-bottom: 5px; + background: #232222; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #adadad; +} + +button.w0bmcustom-css:hover { + background: rgba(84, 84, 84, 0.5); +} + +button.chilledblue-css { + width: 100%; + padding-bottom: 5px; + background: #142121; + border: 1px solid #131916; + color: #adadad; + margin-bottom: 5px; +} +button.chilledblue-css:hover { + background: #183333b8; +} + +button.epilepsie-css { + width: 100%; + padding-bottom: 5px; + background: #232222; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #adadad; +} + +button.epilepsie-css:hover { + background: rgba(84, 84, 84, 0.5); +} \ No newline at end of file diff --git a/public/css/font-awesome.min.css b/public/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/public/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/public/css/glitch.css b/public/css/glitch.css new file mode 100644 index 0000000..7e7fda9 --- /dev/null +++ b/public/css/glitch.css @@ -0,0 +1,816 @@ +/*chilledblue */ +::-webkit-scrollbar-track-piece{background-color:#1a1f22!important}body{background-color:#171d21}.navbar-inverse{background-color:rgba(33,41,47,.74)}.comments{background:rgba(33,41,47,.71)}.panel.panel-default{border:1px solid #131619;background:#21292f}.onclick-menu-content{border:1px solid #131619}.tagtest{background:rgba(33,41,47,.71)}div#tag-display{background:rgba(33,41,47,.71)}.label-default{background-color:#21292f;border:1px solid #1fb2b0}.modal-content{background-color:#21292f}.login_wrapper{background:#1c2125}select.form-control,input.form-control{background-color:#21292f;border:1px solid #131619}.btn-primary{background-color:#21292f}.btn-primary:hover{background-color:#142121}span.addtagsy>a:hover{background:#33414c}.popover{background-color:#21292f;border:1px solid #131619;padding:0}.popover.top>.arrow:after{border-top-color:#131619}.popover-title{margin:0;padding:8px 15px;font-size:14px;background-color:#131619;border-bottom:1px solid #0b0b0b;border-radius:0}.video-js .vjs-control-bar{background-color:rgba(33,41,47,.93)!important}.thumbnail{background-color:#21292f;border:1px solid #131619;border-radius:0}.caption small{background:#142121;color:#d000ff;font-family:VCR;text-shadow:0 0 5px #d000ff;border:1px solid #1fb2b0}.box{background:rgba(33,41,47,.74);border:2px solid #131619}.navbar-fixed-bottom{background:#21292f}.bootstrap-tagsinput{background:#21292f none repeat scroll 0 0;border:1px solid #131619}.panel-default>.panel-heading{background-color:#21292f;border-color:#131619}.list-group-item{background-color:#131619;border:1px solid #21292f}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{background-color:#131619;border-color:#282828}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{background-color:#142121;border-color:#1fb2b0;color:#1fb}.pagination>li>a,.pagination>li>span{background-color:#131619}.blah{background:#21292f;border:1px solid #131619}#dragndrop{background-color:#21292f!important}.profilheader{background:#21292f}table{background-color:#131619}.table-hover>tbody>tr:hover{background-color:#21292f}a.list-group-item-info,button.list-group-item-info{color:#fff;background:#ff005d}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#fff;background-color:#2f3f4b}.dropdown-menu{border:1px solid #131619!important;padding:5px!important;margin:-15px 15px 0!important;border-radius:0!important;background-color:#21292f;min-width:100px}button.w0bmcustom-css{width:100%;padding-bottom:5px;background:#232222;padding:5px;border:1px solid #000;margin-bottom:5px;color:#adadad}button.w0bmcustom-css:hover{background:rgba(84,84,84,.5)}button.chilledblue-css{width:100%;padding-bottom:5px;background:#142121;border:1px solid #131916;margin-bottom:5px;color:#adadad}button.chilledblue-css:hover{background:#183333b8}.suchleiste{background:#21292f none}button.epilepsie-css{width:100%;padding-bottom:5px;background:red;padding:5px;border:1px solid #000;margin-bottom:5px;color:#fff;font-weight:700;text-transform:uppercase;border:1px dashed #ff0}button.epilepsie-css:hover{background:rgba(84,84,84,.5)}.toggo{background-color:#21292f} +/* end */ + +a.navbar-brand { + content: ""; + background-size: contain; + background-image: url(/w0bm_mosh_banner_by_marderchen.gif); + background-repeat: no-repeat; +} + +a.navbar-brand { + box-shadow: 0 0 0 2px #101010; + text-align: center; + font-size: 12px; + border: 1px solid #000; + background-size: cover; + border-radius: 35px; + height: 45px; + position: relative; + top: 2px; + width: 15.9em; +} + +.navbar-brand > img { + visibility: hidden; +} + +/* BLAH */ +:root { + height: 100%; + +} + +i.fa:hover, #infobox:hover, #dlbutton:hover { + animation: textshadow infinite 2s; +z-index: 2; +} + +@keyframes textshadow{ + 0% { + text-shadow: 5px 1px red; + } + 1% { + text-shadow: 0px 0px 5px white, 1px 1px 5px #0100ff, 2px 1px #de00ff, 3px 1px #ff0, 4px 1px red; + } + 2% { + } + 100% { + text-shadow: 0px -20px 1px transparent; + } + +} + +.caption { + color: white !important; + font-size: 17px; + text-shadow: 1px 1px 0px black; +} + +.thumbnail { + background-image: linear-gradient(to top, #0d3132 0%, #330867 100%); +} + +span.label.label-default { + + margin-top: 5px; + +} + +.suchleiste { + background: #13171a none; + border: none; + height: 40px; + border-radius: 15px; + position: relative; + left: 37px; + border: 1px solid #8080804a; +} + +.suchleiste:hover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); +} + +.suchleiste:active, .suchleiste:focus { + border: 1px solid white; +} + +.suchbutton { + display: inline-block; + padding: 0; + width: 40px; + height: 40px; + line-height: 40px; + font-weight: lighter !important; + color: #fff !important; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #0e1f20; + border-radius: 40px; + position: relative; + right: 0px; + z-index: 1; + border: 1px solid #8080804a; +} + +.suchbutton:hover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); +} + +table { + background-color: #1316198a; +} + +.profilheader { + + background: #21292f73; + +} + +.caption small { + + background: transparent; + color: #d000ff; + font-family: VCR; + text-shadow: 0 0 5px #d000ff, 1px 2px 0px black; + border: 0; + +} + +#sidebar, nav{ + background-image: linear-gradient(to top, #0006 0%, #19363887 100%); + background-color: #161618 !important; +} + +span.videoinfo, .modal-content { + background: linear-gradient(to top, #000 0%, #193638f7 100%); +} + + +nav { + background-image: linear-gradient(to top, #0006 0%, #19363887 100%); + background-color: #16161800 !important; +} + +.comments { + background: transparent; +} + +.video-js .vjs-control-bar, .video-js .vjs-big-play-button:active, .video-js .vjs-big-play-button:focus, .video-js:hover .vjs-big-play-button { + background: linear-gradient(to top, #000 0%, #193638f7 100%); + +} + +.tags, .toggo.tag-panel-body { + background-image: linear-gradient(to top, #0006 0%, #19363887 100%); + background-color: transparent; +} + +.label.label-default { + background-image: linear-gradient(to top, #0006 0%, #19363887 100%); + background-color: #000; + padding: 5px; + font-size: 13px; + border-radius: 5px; + box-shadow: 0px 0px 2px black; + font-family: roboto,helvetica neue,Helvetica,Arial,sans-serif; + font-weight: 500; +} + +.panel.panel-default { + background-image: linear-gradient(to top, #0006 0%, #19363887 100%); + margin: 10px; + border-radius: 5px; + border: 1px solid black; +} + +.ps__rail-y { + right: 0; +} + +.ps .ps__rail-x:hover, .ps .ps__rail-y:hover, .ps .ps__rail-x:focus, .ps .ps__rail-y:focus, .ps .ps__rail-x.ps--clicking, .ps .ps__rail-y.ps--clicking { + background-color: transparent; + opacity: 0.9; +} + +.ps__rail-y:hover > .ps__thumb-y, .ps__rail-y:focus > .ps__thumb-y, .ps__rail-y.ps--clicking .ps__thumb-y { + cursor: grabbing; + /*background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%);*/ +} + + + +#sidebar { + background: transparent !important; +} + +input[placeholder="Input tags…"] { + width: 100%; + height: 100%; + vertical-align: text-top; +} + +.tag.label.label-info { + + margin: 5px; + font-size: 16px; + background: black; + border-radius: 5px; + +} + + + + +#comment_container_scrollable, #tag-display { + position: relative; + width: 350px; + height: 900px; +} + +.login_wrapper { + + background: #1c212500; + +} + +.ps__rail-y:hover>.ps__thumb-y, .ps__rail-y:focus>.ps__thumb-y, .ps__rail-y.ps--clicking .ps__thumb-y { + width: 9px; + background: #585757; + cursor: grabbing; +} + + +div#tag-display { + + background: transparent; + +} + +.btn.btn-primary, #submittags { + + border-radius: 5px; + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + +} + +.btn.btn-primary:hover { + opacity: 0.9; + background: transparent; +} + +button#submittags:hover { + background: linear-gradient(to top, #524e4e 0%, #287b82 100%); + transition: 2s ease-out; +} + +.bootstrap-tagsinput { + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + border: 1px solid #131619; + border-radius: 5px; + border: 1px solid cyan; + padding: 5.1px 1px; +} + +.tag.label.label-info { + margin: 0; + font-size: 13px; + background: black; + border-radius: 5px; +} + +.bootstrap-tagsinput { + padding-top: 0; + padding-left: 2px; + vertical-align: middle; + height: 2.4em; + +} + +div#tag-display { + max-height: 3em; +} + +.bootstrap-tagsinput .tag { + margin-right: 2px; + color: white; + padding-top: 0; + vertical-align: sub; + position: relative; + top: 1.5px; + padding: 5px; +} + +.vidinfo { + text-shadow: 1px 1px black; +} + +.text-center { + text-shadow: 1px 1px black; + font-size: 30px; +} + +.text-center .last { + font-size: 21px; +} + +.text-center .first { + font-size: 21px; +} + +.navbar-inverse .navbar-nav > li > a { + background: linear-gradient(to top, #0a0a0aa3 0%, #163f42a6 100%); + color: white; + text-align: center; + font-size: 15px; + margin: 0; + border: 1px solid #8080804a; + padding: 15px 15px 15px; +} + +.navbar-inverse .navbar-nav > li > a:hover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); + border-bottom: 1px solid; +} + +a.navbar-brand { + box-shadow: 0px 0px 0 2px #101010; + text-align: center; + font-size: 12px; + border: 1px solid #000000; + background-size: cover; + border-radius: 35px; + height: 45px; + position: relative; + top: 2px; +} + +.navbar-brand > img { + display: block; + height: 45px; + margin-top: 0; +} + +@media (min-width: 768px) { +.navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { + + margin-right: 2px; +} +} + +.navbar-header { + background: linear-gradient(to top, #0dd97d63 0%, #0000004f 100%); + border-radius: 50px; +} + +.navbar-header:hover { + transition: 3s; + animation: hue .1s infinite linear; +} + +@keyframes hue { + from { + filter: hue-rotate(0deg); + } + + to { + filter: hue-rotate(-360deg); + } +} + +/*nav.navbar.navbar-inverse.navbar-static-top { + border-top: 2px solid black; + border-bottom: 2px solid black; +}*/ +/*nav.navbar.navbar-inverse.navbar-static-top { + position: sticky; + top: 0; +}*/ + +.friends { + display: none; +} + +/*.tagtest { + padding: 5px; + display: block; + height: auto; + border-radius: 5px; + margin-bottom: 5px; + background: linear-gradient(to top, #000 0%, #193638 100%); + border: 1px solid black; +}*/ + +div.tags.hidden-xs { + padding: 10px; + width: inherit; + background: transparent; +} + +#sidebar > .comments, #sidebar > .tags { + border-bottom: 0; +} + +.tags.hidden-xs { + padding: 15px; + background: transparent; +} + +div#tag-display { + border-top: 0; +} + +div#tag-display { + overflow: auto; + max-height: 4.6em; + padding: 0px 0px 0px 5px; + padding-bottom: 0; + border-top: 0; + width: 100%; + border-radius: 5px; + box-shadow: 0 0 0 1px cyan; +} + +.tagtest { + background: transparent; +} + +div#tag-add, .toggo.tag-panel-body { + background: linear-gradient(to top, #000 0%, #193638 100%); + padding: 5px; + border-radius: 5px; + border: 1px solid black; +} + +.nav > li.addtagsy > a { + background: linear-gradient(to top, #0a0a0aa3 0%, #163f42a6 100%); + margin-right: 2px; + border: 1px solid #8080804a; + transition: 0.3s; + border-radius: 5px; + color: white; + background-color: #16161800 !important; +} + +.nav > li.addtagsy > a:hover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); + border-bottom: 1px solid; + color: #1FB2B0; +} + +#sidebar { + width: 380px; +} + +#sidebar > .comments, #sidebar > .tags { + width: 380px !important; +} + +label[for='tag-add-toggle'] { + background: linear-gradient(to top, #0a0a0aa3 0%, #163f42a6 100%); + margin-right: 2px; + border: 1px solid #8080804a; + transition: 0.3s; + border-radius: 5px; + color: white; +} + +label[for='tag-add-toggle']:hover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); + border-bottom: 1px solid; +} + +ul.nav.navbar-nav.info-nav { + padding: 5px; + width: 100%; + display: flex; + justify-content: space-between; +} + +.toggo.tag-panel-body { + margin-bottom: 15px; +} + +.panel-danger { + background: linear-gradient(to top, #000 0%, #6b1f22eb 100%); + border-bottom: 1px solid red; + background-color: transparent; + border-radius: 5px; + margin: 10px; +} + +.ps__thumb-y { + background: #49716b; + border: 1px solid black; + width: 8px; +} + +.navbar-inverse .navbar-nav > li > a, ul.nav.navbar-nav.info-nav > li.addtagsy { + border-radius: 15px; +} + +::-webkit-scrollbar { + width: 15px; + height: 15px; + background-color: #9b9999!important; +} + +::-webkit-scrollbar-thumb { + width: 24px; + background: linear-gradient(to top, #fff2f2a3 0%, #0c5430a6 100%) !important; +} +::-webkit-scrollbar-track-piece { + background-color: #000000!important; +} + +::-webkit-scrollbar-track-piece { + background: linear-gradient(to top, #163f42a6 100%, #0a0a0aa3 0%); + width: 15px; + max-height: 15px!important; +} + +button.suchbutton { + box-shadow: 0 0 6px -2px #1cada6; +} + +button.suchbutton { + outline: 0 !important; +} + +.suchleiste:active, .suchleiste:focus { + border: 0; + box-shadow: -3px 0px 6px 0px #00BCD4; +} + +.suchleiste { + background: #13171a none; + border: none; + height: 40px; + border-radius: 15px; + position: relative; + left: 37px; + border: 1px solid #8080804a; +} + +table.table.table-hover.table-condensed { + padding: 5px; + border: 1px solid black; + border-radius: 5px; + background: linear-gradient(to top, #0a0a0aa3 0%, #163f42a6 100%); +} + +.profilheader { + background: transparent; + padding: 0; + text-shadow: 1px 1px 1px black; +} + + +p, td, span, h3 { + text-shadow: 1px 1px 1px black; +} + +* { + outline: 0 !important; +} + +.nav .open>a, .nav .open>a:hover, .nav .open>a:focus { + border: 1px solid #8080804a; +} + +.dropdown-menu { + border: 1px solid #131619!important; + padding: 5px!important; + margin: -15px 8px 0!important; + border-radius: 0!important; + background: linear-gradient(to top, #0a0a0aa3 0%, #163f42a6 100%) + min-width: 100px; +} + +.popover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); + background-color: black; + border: 1px solid #000; + padding: 0; + border-radius: 5px; + color: white; +} + +.box { + background-image: linear-gradient(to top,#0006 0%,#19363887 100%); + margin: 10px; + border-radius: 5px; + border: 1px solid #000; +} + +body { + background: #28575f; + background: linear-gradient(to top, #08161f 0%, #1c0e2d 100%); +} + +html { + height: 100%; +} +body { + height: 100%; + margin: 0; + background-repeat: no-repeat; + background-attachment: fixed; +} + +.video-js .vjs-control:focus:before, .video-js .vjs-control:hover:before, .video-js .vjs-control:focus { + text-shadow: 0 0 0.1em #1fb2b0, 0 0 0.1em #1fb2b0, 0 0 0.5em #1fb2b0; +} + +nav.mitte { + border-bottom-left-radius: 5px; + border-left: 1px solid black; + border-bottom: 1px solid black; +} + +div#pagination { + border-top: 1px solid black; +} + +.panel-heading { + border-top-right-radius: 5px; + border-top-left-radius: 5px; +} + +select.form-control, input.form-control { + background-color: #21292f; + border: 1px solid #131619; + border: 1px solid cyan; + border-radius: 5px; + padding: 10px; + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); +} + +.embed-responsive.embed-responsive-16by9 { + border-left: 2px solid black; + border-bottom: 2px solid black; + border-right: 2px solid black; + background: linear-gradient(to top, #0a0a0abf 0%, #163f428a 100%); + border-bottom-left-radius: 15px; + border-bottom-right-radius: 15px; + border-top: 2px solid black; +} + +.videotitle { + background: linear-gradient(to top,#163f428a 0%,#163f428a 100%); + margin: 0; + padding: 5px; + border-top-right-radius: 5px; + border-top-left-radius: 5px; + border: 0; + border-left: 2px solid black; + border-top: 2px solid black; + border-right: 2px solid black; +} +div#tag-display { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAICAYAAAA4GpVBAAAAAXNSR…dJTVBXgQ4XAAAAF0lEQVQI12NgYGAwZsAECDEWBgYGBgYACpwAazfG694AAAAASUVORK5CYII=); +} + +#parent { + background: inherit; + border-radius: 0; + border: 0; + padding: 5px; + cursor: pointer; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + box-shadow: 0px 0px 0px 1px #000000; +} + +.blah { + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + background-color: #21292f; + border: 1px solid #131619; + border: 1px solid cyan; + border-radius: 5px; + padding: 10px; +} + +.onclick-menu { + color: white; + text-shadow: none; + background: none; + background: black; + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + padding: 0px !important; + border-radius: 5px; + border: 1px solid #1FB2B0; + text-decoration: none; + transition: .3s; +} + +div#comment_tools > a{ + animation: none; + color: white; + text-shadow: none; + background: none; + background: black; + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + padding: 5px !important; + border-radius: 5px; + border: 1px solid #1FB2B0; + text-decoration: none; +} + +div#comment_tools > a:hover { + opacity: 0.8; + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); + border-bottom: 1px solid; + color: #fff; + text-shadow: 1px 1px 0px black; +} + +.commentform-panel-footer { + display: flex; + justify-content: space-between; + padding-left: 15px; + padding-right: 15px; + padding-bottom: 15px; + margin-top: -10px; +} + +.btn-sm, .btn-group-sm>.btn { + padding: 10px; + font-size: 12px; + line-height: .8; + border-radius: 0; +} + +.spoiler { + padding: 10 !important; +} + +a.anim { + animation: none !important; +} + +a.spoiler:hover { + background: black !important; + color: white; +} + +a.anim:hover { + animation: color 0.6s linear infinite !important; +} + +a.rainbow:hover { + animation: rainbold 1s linear infinite !important; +} + +#commentForm textarea { + background: #061010; + border-radius: 5px; + border: 1px solid black; +} + +.onclick-menu:before { + padding: 5px 10px; + color: #fff; + text-shadow: 1px 1px 0px black; + font-weight: bold; + cursor: pointer; + vertical-align: sub; + position: relative; + top: 2px; +} + +.emoji-shit { + color: white; + text-shadow: none; + background: none; + background: black; + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + padding: 0px !important; + border-radius: 5px; + border: 1px solid #1FB2B0; + text-decoration: none; + position: relative; +} + +.header { + width: 100%; + vertical-align: text-top; + position: relative; + top: 4px; +} + +.onclick-menu:hover { + background: linear-gradient(to top, #0a0a0a 0%, #326558a6 100%); + border-bottom: 1px solid; + color: #fff; + text-shadow: 1px 1px 0px black; +} + +.emoji-shit:hover { + background: silver; +} + +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content { + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); +} + +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item, .video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-title { + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + border: 1px solid black; +} + +.vjs-menu-item:hover { + opacity: 0.7; +} diff --git a/public/css/jquery.mCustomScrollbar.min.css b/public/css/jquery.mCustomScrollbar.min.css new file mode 100644 index 0000000..73d4bbd --- /dev/null +++ b/public/css/jquery.mCustomScrollbar.min.css @@ -0,0 +1 @@ +.mCustomScrollbar{-ms-touch-action:none;touch-action:none}.mCustomScrollbar.mCS_no_scrollbar{-ms-touch-action:auto;touch-action:auto}.mCustomScrollBox{position:relative;overflow:hidden;height:100%;max-width:100%;outline:0;direction:ltr}.mCSB_container{overflow:hidden;width:auto;height:auto}.mCSB_inside>.mCSB_container{margin-right:30px}.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container{margin-right:0;margin-left:30px}.mCS-dir-rtl>.mCSB_inside>.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-left:0}.mCSB_scrollTools{position:absolute;width:16px;height:auto;left:auto;top:0;right:0;bottom:0}.mCSB_outside+.mCSB_scrollTools{right:-26px}.mCS-dir-rtl>.mCSB_inside>.mCSB_scrollTools,.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{right:auto;left:0}.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{left:-26px}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px;z-index:1}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{position:relative;width:4px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px;text-align:center}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:12px}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:8px}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonUp{display:block;position:absolute;height:20px;width:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{bottom:0}.mCSB_horizontal.mCSB_inside>.mCSB_container{margin-right:0;margin-bottom:30px}.mCSB_horizontal.mCSB_outside>.mCSB_container{min-height:100%}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal{width:auto;height:16px;top:auto;right:0;bottom:0;left:0}.mCustomScrollBox+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:-26px}.mCSB_scrollTools.mCSB_scrollTools_horizontal a+.mCSB_draggerContainer{margin:0 20px}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:2px;margin:7px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{width:30px;height:100%;left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:12px;margin:2px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:8px;margin:4px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{display:block;position:absolute;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{right:0}.mCSB_container_wrapper{position:absolute;height:auto;width:auto;overflow:hidden;top:0;left:0;right:0;bottom:0;margin-right:30px;margin-bottom:30px}.mCSB_container_wrapper>.mCSB_container{padding-right:30px;padding-bottom:30px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:20px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:20px}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden+.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:20px}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container_wrapper{margin-right:0;margin-left:30px}.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden>.mCSB_container{padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden>.mCSB_container{padding-bottom:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0;margin-left:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar{-webkit-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCS-autoHide>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide>.mCustomScrollBox~.mCSB_scrollTools{opacity:0;filter:"alpha(opacity=0)";-ms-filter:"alpha(opacity=0)"}.mCS-autoHide:hover>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide:hover>.mCustomScrollBox~.mCSB_scrollTools,.mCustomScrollBox:hover>.mCSB_scrollTools,.mCustomScrollBox:hover~.mCSB_scrollTools,.mCustomScrollbar>.mCustomScrollBox>.mCSB_scrollTools.mCSB_scrollTools_onDrag,.mCustomScrollbar>.mCustomScrollBox~.mCSB_scrollTools.mCSB_scrollTools_onDrag{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp{background-image:url(mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover,.mCSB_scrollTools .mCSB_buttonUp:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active,.mCSB_scrollTools .mCSB_buttonUp:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:rgba(0,0,0,.85)}.mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:rgba(0,0,0,.9)}.mCS-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px auto}.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.1)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,.mCS-rounded.mCSB_scrollTools .mCSB_dragger{height:14px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:14px;margin:0 1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger{width:14px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:14px;margin:1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:16px;height:16px;margin:-1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:4px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:16px;width:16px;margin:0 -1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:4px;margin:6px 0}.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{background-position:0 -72px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -92px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -112px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -128px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px -72px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -92px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -112px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail{width:4px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{background-color:transparent;background-position:center}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==);background-repeat:repeat-y;opacity:.3;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{height:4px;margin:6px 0;background-repeat:repeat-x}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px -72px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -92px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -112px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=)}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px -72px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -92px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -112px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-y;background-image:-moz-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,right top,color-stop(0%,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to right,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-x;background-image:-moz-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to bottom,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger{height:70px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger{width:70px}.mCS-3d-dark.mCSB_scrollTools,.mCS-3d.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{width:8px;background-color:#000;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 0 1px rgba(0,0,0,.5),inset -1px 0 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:8px;margin:4px 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.5),inset 0 -1px 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:8px;margin:4px auto}.mCS-3d.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);box-shadow:inset 1px 0 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mCSB_inside+.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCSB_inside+.mCS-3d-thick.mCSB_scrollTools_vertical{right:1px}.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCS-3d-thick.mCSB_scrollTools_vertical{box-shadow:inset 1px 0 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal,.mCS-3d-thick.mCSB_scrollTools_horizontal{bottom:1px;box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4);width:12px;margin:2px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:12px;width:auto}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{background-color:#000;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-thick-dark.mCSB_scrollTools{box-shadow:inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal{box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4),inset -1px 0 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#777}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{background-color:#fff;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{right:0;margin:12px 0}.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:0;margin:0 12px}.mCS-dir-rtl>.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCS-dir-rtl>.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{left:0;right:auto}.mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger{height:50px}.mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger{width:50px}.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail{width:6px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px}.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:6px;margin:5px 0}.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:12px}.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:12px;margin:2px 0}.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools .mCSB_draggerRail{width:12px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;margin:3px 5px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:6px;margin:5px 3px;position:absolute;width:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:12px;margin:2px 0}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent;border-width:1px;border-style:solid;border-color:#fff;border-color:rgba(255,255,255,.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{border-color:#000;border-color:rgba(0,0,0,.2)}.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.6)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.6)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)} \ No newline at end of file diff --git a/public/css/simplebar.css b/public/css/simplebar.css new file mode 100644 index 0000000..f87a0d4 --- /dev/null +++ b/public/css/simplebar.css @@ -0,0 +1,108 @@ +[data-simplebar] { + position: relative; + z-index: 0; + overflow: hidden!important; + max-height: inherit; + -webkit-overflow-scrolling: touch; /* Trigger native scrolling for mobile, if not supported, plugin is used. */ +} + +[data-simplebar="init"] { + display: flex; +} + +[data-simplebar] .simplebar-scroll-content, +[data-simplebar] .simplebar-content { + overflow: hidden; +} + +[data-simplebar="init"] .simplebar-scroll-content, +[data-simplebar="init"] .simplebar-content { + overflow: scroll; +} + +.simplebar-scroll-content { + overflow-x: hidden!important; + min-width: 100%!important; + max-height: inherit!important; + box-sizing: content-box!important; +} + +.simplebar-content { + overflow-y: hidden!important; + box-sizing: border-box!important; + min-height: 100%!important; +} + +.simplebar-track { + z-index: 1; + position: absolute; + right: 0; + bottom: 0; + width: 11px; + pointer-events: none; +} + +.simplebar-scrollbar { + position: absolute; + right: 2px; + width: 7px; + min-height: 10px; +} + +.simplebar-scrollbar:before { + position: absolute; + content: ""; + background: black; + border-radius: 7px; + left: 0; + right: 0; + opacity: 0; + transition: opacity 0.2s linear; +} + +.simplebar-track .simplebar-scrollbar.visible:before { + /* When hovered, remove all transitions from drag handle */ + opacity: 0.5; + transition: opacity 0 linear; +} + +.simplebar-track.vertical { + top: 0; +} + +.simplebar-track.vertical .simplebar-scrollbar:before { + top: 2px; + bottom: 2px; +} + +.simplebar-track.horizontal { + left: 0; + width: auto; + height: 11px; +} + +.simplebar-track.horizontal .simplebar-scrollbar:before { + height: 100%; + left: 2px; + right: 2px; +} + +.horizontal.simplebar-track .simplebar-scrollbar { + right: auto; + left: 0; + top: 2px; + height: 7px; + min-height: 0; + min-width: 10px; + width: auto; +} + +/* Rtl support */ +[data-simplebar-direction="rtl"] .simplebar-track { + right: auto; + left: 0; +} + +[data-simplebar-direction="rtl"] .simplebar-track.horizontal { + right: 0; +} \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css new file mode 100644 index 0000000..682e959 --- /dev/null +++ b/public/css/style.css @@ -0,0 +1,6221 @@ +/*! + * bootswatch v3.3.5 + * Homepage: http://bootswatch.com + * Copyright 2012-2015 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*/ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #161618 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #888888; + background-color: #060606; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #1FB2B0; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a9fd6; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #282828; + border: 1px solid #282828; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #282828; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; + color: #ffffff; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #888888; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 35%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 56px; +} +h2, +.h2 { + font-size: 45px; +} +h3, +.h3 { + font-size: 34px; +} +h4, +.h4 { + font-size: 24px; +} +h5, +.h5 { + font-size: 20px; +} +h6, +.h6 { + font-size: 16px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + background-color: #ff8800; + padding: .2em; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; + position: relative; + top: 15px; + color: rgb(31, 178, 176); + font-family: "Oswald",sans-serif; + font-size: 22px; +} +.text-center a{ + color: #FFF; +} +.text-center span.videoinfo { + font-size: 17px; + position: relative; + top: 5px; +} +.text-center span.videovote { + left: -240px; + position: relative; +} +.text-center .last { + float: right; + font-size: 18px; +} +.text-center .first { + font-size: 18px; + float: left; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #888888; +} +.text-primary { + color: #2a9fd6; +} +a.text-primary:hover, +a.text-primary:focus { + color: #2180ac; +} +.text-success { + color: #ffffff; +} +a.text-success:hover, +a.text-success:focus { + color: #e6e6e6; +} +.text-info { + color: #ffffff; +} +a.text-info:hover, +a.text-info:focus { + color: #e6e6e6; +} +.text-warning { + color: #ffffff; +} +a.text-warning:hover, +a.text-warning:focus { + color: #e6e6e6; +} +.text-danger { + color: #ffffff; +} +a.text-danger:hover, +a.text-danger:focus { + color: #e6e6e6; +} +.bg-primary { + color: #fff; + background-color: #2a9fd6; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #2180ac; +} +.bg-success { + background-color: #77b300; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #558000; +} +.bg-info { + background-color: #9933cc; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #7a29a3; +} +.bg-warning { + background-color: #ff8800; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #cc6d00; +} +.bg-danger { + background-color: #cc0000; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #990000; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #282828; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #888888; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #282828; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #555555; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #282828; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #282828; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } + .aside + div > .container { + width: 400px; + } + .aside + div > .flashcontainer > .container { + width: 400px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } + .aside + div > .container { + width: 620px; + } + .aside + div > .flashcontainer > .container { + width: 620px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } + .aside + div > .container { + width: 820px; + } + .aside + div > .flashcontainer > .container { + width: 820px; + } +} +@media (min-width: 1550px) { + .container { + width: 1170px !important; + } +} +.comments { + overflow-wrap: break-word; + word-wrap: break-word; +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: #181818; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #888888; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #282828; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #282828; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #282828; +} +.table .table { + background-color: #060606; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #282828; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #282828; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #080808; +} +.table-hover > tbody > tr:hover { + background-color: #282828; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #282828; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #1b1b1b; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #77b300; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #669a00; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #9933cc; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #8a2eb8; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #ff8800; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #e67a00; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #cc0000; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #b30000; +} +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #282828; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #888888; + border: 0; + border-bottom: 1px solid #282828; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 9px; + font-size: 14px; + line-height: 1.42857143; + color: #888888; +} +.form-control { + display: block; + width: 100%; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #888888; + background-color: #ffffff; + background-image: none; + border: 1px solid #282828; + border-radius: 0px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +/*.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +}*/ +.form-control::-moz-placeholder { + color: #888888; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #888888; +} +.form-control::-webkit-input-placeholder { + color: #888888; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #adafae; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 38px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 54px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 9px; + padding-bottom: 9px; + margin-bottom: 0; + min-height: 34px; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 54px; + padding: 14px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 54px; + line-height: 54px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 54px; + padding: 14px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 54px; + line-height: 54px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 54px; + min-height: 38px; + padding: 15px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 47.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 38px; + height: 38px; + line-height: 38px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 54px; + height: 54px; + line-height: 54px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #ffffff; +} +.has-success .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-success .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #77b300; +} +.has-success .form-control-feedback { + color: #ffffff; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #ffffff; +} +.has-warning .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-warning .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #ff8800; +} +.has-warning .form-control-feedback { + color: #ffffff; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #ffffff; +} +.has-error .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-error .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #cc0000; +} +.has-error .form-control-feedback { + color: #ffffff; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #c8c8c8; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 9px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 29px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 9px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 19.6666662px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 5px 15px; + font-size: 12px; + line-height: 0.7; + border-radius: 0px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #ffffff; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #ffffff; + background-color: #424242; + border-color: #424242; +} +.btn-default:focus, +.btn-default.focus { + color: #ffffff; + background-color: #282828; + border-color: #020202; +} +.btn-default:hover { + color: #ffffff; + background-color: #282828; + border-color: #232323; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #ffffff; + background-color: #282828; + border-color: #232323; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #ffffff; + background-color: #161616; + border-color: #020202; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #424242; + border-color: #424242; +} +.btn-default .badge { + color: #424242; + background-color: #ffffff; +} +.btn-primary { + color: #ffffff; + background-color: #1FB2B0; + border-color: #1FB2B0; +} +.btn-primary:focus, +.btn-primary.focus { + color: #ffffff; + background-color: #2180ac; + border-color: #15506c; +} +.btn-primary:hover { + color: #ffffff; + background-color: #2180ac; + border-color: #1f79a3; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #2180ac; + border-color: #1f79a3; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #ffffff; + background-color: #1b698e; + border-color: #15506c; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #2a9fd6; + border-color: #2a9fd6; +} +.btn-primary .badge { + color: #2a9fd6; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #77b300; + border-color: #77b300; +} +.btn-success:focus, +.btn-success.focus { + color: #ffffff; + background-color: #558000; + border-color: #223300; +} +.btn-success:hover { + color: #ffffff; + background-color: #558000; + border-color: #4e7600; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #558000; + border-color: #4e7600; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #ffffff; + background-color: #3d5c00; + border-color: #223300; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #77b300; + border-color: #77b300; +} +.btn-success .badge { + color: #77b300; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #9933cc; + border-color: #9933cc; +} +.btn-info:focus, +.btn-info.focus { + color: #ffffff; + background-color: #7a29a3; + border-color: #4c1966; +} +.btn-info:hover { + color: #ffffff; + background-color: #7a29a3; + border-color: #74279b; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #7a29a3; + border-color: #74279b; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #ffffff; + background-color: #652287; + border-color: #4c1966; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #9933cc; + border-color: #9933cc; +} +.btn-info .badge { + color: #9933cc; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #ff8800; + border-color: #ff8800; +} +.btn-warning:focus, +.btn-warning.focus { + color: #ffffff; + background-color: #cc6d00; + border-color: #804400; +} +.btn-warning:hover { + color: #ffffff; + background-color: #cc6d00; + border-color: #c26700; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #cc6d00; + border-color: #c26700; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #ffffff; + background-color: #a85a00; + border-color: #804400; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #ff8800; + border-color: #ff8800; +} +.btn-warning .badge { + color: #ff8800; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #cc0000; + border-color: #cc0000; +} +.btn-danger:focus, +.btn-danger.focus { + color: #ffffff; + background-color: #990000; + border-color: #4d0000; +} +.btn-danger:hover { + color: #ffffff; + background-color: #990000; + border-color: #8f0000; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #990000; + border-color: #8f0000; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #ffffff; + background-color: #750000; + border-color: #4d0000; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #cc0000; + border-color: #cc0000; +} +.btn-danger .badge { + color: #cc0000; + background-color: #ffffff; +} +.btn-link { + color: #2a9fd6; + font-weight: normal; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #2a9fd6; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #888888; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 14px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 15px; + font-size: 12px; + line-height: 0.8; + border-radius: 0px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + -o-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #222222; + border: 1px solid #444444; + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: rgba(255, 255, 255, 0.1); +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #ffffff; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #ffffff; + background-color: #2a9fd6; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #2a9fd6; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #888888; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #888888; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 54px; + padding: 14px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 54px; + line-height: 54px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 8px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #888888; + text-align: center; + background-color: #adafae; + border: 1px solid #282828; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 14px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #222222; +} +.nav > li.disabled > a { + color: #888888; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #888888; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #222222; + border-color: #2a9fd6; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #282828; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: transparent transparent #282828; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #ffffff; + background-color: #2a9fd6; + border: 1px solid #282828; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #060606; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #2a9fd6; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #060606; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + font-size: 18px; + line-height: 20px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; + height: 40px; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -10px; + padding-top: 8px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 6px; + margin-bottom: 6px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 6px; + margin-bottom: 6px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #060606; + border-color: #282828; +} +.navbar-default .navbar-brand { + color: #ffffff; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #888888; +} +.navbar-default .navbar-nav > li > a { + color: #888888; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #888888; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #282828; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #282828; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #282828; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: transparent; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #888888; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #888888; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #888888; +} +.navbar-default .navbar-link:hover { + color: #ffffff; +} +.navbar-default .btn-link { + color: #888888; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #ffffff; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #888888; +} +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #888888; +} +.navbar-inverse .navbar-nav > li > a { + color: #ADADAD; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #aaaaaa; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: transparent; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #888888; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #aaaaaa; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #888888; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #888888; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #aaaaaa; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #222222; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #ffffff; +} +.breadcrumb > .active { + color: #888888; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 8px 12px; + line-height: 1.42857143; + text-decoration: none; + color: #ffffff; + background-color: #222222; + border: 1px solid #282828; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 3; + color: #ffffff; + background-color: #2a9fd6; + border-color: transparent; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #2a9fd6; + border-color: transparent; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #888888; + background-color: #222222; + border-color: #282828; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 14px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #222222; + border: 1px solid #282828; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #2a9fd6; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #888888; + background-color: #222222; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #424242; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #282828; +} +.label-primary { + background-color: #2a9fd6; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #2180ac; +} +.label-success { + background-color: #77b300; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #558000; +} +.label-info { + background-color: #9933cc; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #7a29a3; +} +.label-warning { + background-color: #ff8800; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #cc6d00; +} +.label-danger { + background-color: #cc0000; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #990000; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 2px 7px; + font-size: 12px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: #2a9fd6; + border-radius: 10px; + margin-right: -13px; + margin-left: -7px; + margin-top: -15px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #2a9fd6; + background-color: #ffffff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #151515; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #000000; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #282828; + border: 1px solid #282828; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #2a9fd6; +} +.thumbnail .caption { + padding: 9px; + color: #888888; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #77b300; + border-color: #809a00; + color: #ffffff; +} +.alert-success hr { + border-top-color: #6a8000; +} +.alert-success .alert-link { + color: #e6e6e6; +} +.alert-info { + background-color: #9933cc; + border-color: #6e2caf; + color: #ffffff; +} +.alert-info hr { + border-top-color: #61279b; +} +.alert-info .alert-link { + color: #e6e6e6; +} +.alert-warning { + background-color: #ff8800; + border-color: #f05800; + color: #ffffff; +} +.alert-warning hr { + border-top-color: #d64f00; +} +.alert-warning .alert-link { + color: #e6e6e6; +} +.alert-danger { + background-color: #cc0000; + border-color: #bd001f; + color: #ffffff; +} +.alert-danger hr { + border-top-color: #a3001b; +} +.alert-danger .alert-link { + color: #e6e6e6; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #222222; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #2a9fd6; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #77b300; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #9933cc; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #ff8800; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #cc0000; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + zoom: 1; + overflow: hidden; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #222222; + border: 1px solid #282828; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #888888; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #ffffff; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + text-decoration: none; + color: #888888; + background-color: #484848; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #adafae; + color: #888888; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #888888; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #2a9fd6; + border-color: #2a9fd6; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #d5ecf7; +} +.list-group-item-success { + color: #ffffff; + background-color: #77b300; +} +a.list-group-item-success, +button.list-group-item-success { + color: #ffffff; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #ffffff; + background-color: #669a00; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-info { + color: #ffffff; + background-color: #9933cc; +} +a.list-group-item-info, +button.list-group-item-info { + color: #ffffff; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #ffffff; + background-color: #8a2eb8; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-warning { + color: #ffffff; + background-color: #ff8800; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #ffffff; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #ffffff; + background-color: #e67a00; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-danger { + color: #ffffff; + background-color: #cc0000; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #ffffff; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #ffffff; + background-color: #b30000; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 5px; + background-color: rgba(34, 34, 34, 0.61); + border: 1px solid rgba(10, 10, 11, 0.46); + border-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + color: #F2F5F4; + padding: 5px 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + padding: 0px 0px 8px 15px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #282828; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #282828; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #282828; +} +.panel-default { + border-color: 1px solid rgba(10, 10, 11, 0.46); +} +.panel-default > .panel-heading { + color: #888888; + background-color: #3c3c3c; + border-color: #282828; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #282828; +} +.panel-default > .panel-heading .badge { + color: #3c3c3c; + background-color: #888888; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #282828; +} +.panel-primary { + border-color: #2a9fd6; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #1FB2B0; + border-color: #1FB2B0; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #2a9fd6; +} +.panel-primary > .panel-heading .badge { + color: #2a9fd6; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #2a9fd6; +} +.panel-success { + border-color: #809a00; +} +.panel-success > .panel-heading { + color: #ffffff; + background-color: #77b300; + border-color: #809a00; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #809a00; +} +.panel-success > .panel-heading .badge { + color: #77b300; + background-color: #ffffff; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #809a00; +} +.panel-info { + border-color: #6e2caf; +} +.panel-info > .panel-heading { + color: #ffffff; + background-color: #9933cc; + border-color: #6e2caf; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #6e2caf; +} +.panel-info > .panel-heading .badge { + color: #9933cc; + background-color: #ffffff; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #6e2caf; +} +.panel-warning { + border-color: #f05800; +} +.panel-warning > .panel-heading { + color: #ffffff; + background-color: #ff8800; + border-color: #f05800; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #f05800; +} +.panel-warning > .panel-heading .badge { + color: #ff8800; + background-color: #ffffff; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #f05800; +} +.panel-danger { + border-color: #bd001f; +} +.panel-danger > .panel-heading { + color: #ffffff; + background-color: #cc0000; + border-color: #bd001f; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bd001f; +} +.panel-danger > .panel-heading .badge { + color: #cc0000; + background-color: #ffffff; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bd001f; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; + box-shadow: 0 0 15px #000; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #151515; + border: 1px solid #030303; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #202020; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + -webkit-background-clip: padding-box; + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #282828; + min-height: 16.42857143px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + padding: 20px; + text-align: right; + border-top: 1px solid #282828; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 12px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + background-color: #000000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 14px; + background-color: #202020; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #181818; + border-bottom: 1px solid #0b0b0b; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #666666; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #202020; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #666666; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #202020; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #666666; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #202020; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #666666; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #202020; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +.text-primary, +.text-primary:hover { + color: #2a9fd6; +} +.text-success, +.text-success:hover { + color: #77b300; +} +.text-danger, +.text-danger:hover { + color: #cc0000; +} +.text-warning, +.text-warning:hover { + color: #ff8800; +} +.text-info, +.text-info:hover { + color: #9933cc; +} +.bg-success, +.bg-info, +.bg-warning, +.bg-danger { + color: #fff; +} +table, +.table { + color: #fff; +} +table a:not(.btn), +.table a:not(.btn) { + color: #fff; + text-decoration: underline; +} +table .dropdown-menu a, +.table .dropdown-menu a { + text-decoration: none; +} +table .text-muted, +.table .text-muted { + color: #888888; +} +.table-responsive > .table { + background-color: #181818; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label, +.has-warning .form-control-feedback { + color: #ff8800; +} +.has-warning .form-control, +.has-warning .form-control:focus, +.has-warning .input-group-addon { + border-color: #ff8800; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label, +.has-error .form-control-feedback { + color: #cc0000; +} +.has-error .form-control, +.has-error .form-control:focus, +.has-error .input-group-addon { + border-color: #cc0000; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label, +.has-success .form-control-feedback { + color: #77b300; +} +.has-success .form-control, +.has-success .form-control:focus, +.has-success .input-group-addon { + border-color: #77b300; +} +legend { + color: #fff; +} +.input-group-addon { + background-color: #424242; +} +.nav-tabs a, +.nav-pills a, +.breadcrumb a, +.pager a { + color: #fff; +} +.alert .alert-link, +.alert a { + color: #ffffff; + text-decoration: underline; +} +.alert .close { + text-decoration: none; +} +.close { + color: #fff; + text-decoration: none; + opacity: 0.4; +} +.close:hover, +.close:focus { + color: #fff; + opacity: 1; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #282828; +} +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + border-color: #282828; +} +a.list-group-item-success.active { + background-color: #77b300; +} +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + background-color: #669a00; +} +a.list-group-item-warning.active { + background-color: #ff8800; +} +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + background-color: #e67a00; +} +a.list-group-item-danger.active { + background-color: #cc0000; +} +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + background-color: #b30000; +} +.jumbotron h1, +.jumbotron h2, +.jumbotron h3, +.jumbotron h4, +.jumbotron h5, +.jumbotron h6 { + color: #fff; +} diff --git a/public/css/video-js.min.css b/public/css/video-js.min.css new file mode 100644 index 0000000..99ea6ec --- /dev/null +++ b/public/css/video-js.min.css @@ -0,0 +1 @@ +.video-js .vjs-big-play-button:before,.video-js .vjs-control:before,.video-js .vjs-modal-dialog,.vjs-modal-dialog .vjs-modal-dialog-content{position:absolute;top:0;left:0;width:100%;height:100%}.video-js .vjs-big-play-button:before,.video-js .vjs-control:before{text-align:center}@font-face{font-family:VideoJS;src:url(../font/1.5.1/VideoJS.eot?#iefix) format("eot")}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAA4wAAoAAAAAFfAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAD4AAABWUZFeBGNtYXAAAAE0AAAAOgAAAUriLxC2Z2x5ZgAAAXAAAAnnAAAO5OV/F/5oZWFkAAALWAAAACsAAAA2C4eUa2hoZWEAAAuEAAAAGAAAACQOogcfaG10eAAAC5wAAAAPAAAAeNIAAABsb2NhAAALrAAAAD4AAAA+MMgtQm1heHAAAAvsAAAAHwAAACABLwB5bmFtZQAADAwAAAElAAACCtXH9aBwb3N0AAANNAAAAPkAAAF5vawAenicY2BkZ2CcwMDKwMFSyPKMgYHhF4RmjmEIZzzHwMDEwMrMgBUEpLmmMDh8ZPwoyw7iLmSHCDOCCADu/Qo9AAB4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGD7K/v8PUvCREUTzM0DVAwEjG8OIBwCOWgbUAAB4nI1XfVBU1xV/574vlsUlj/14grDs48FuAgaR3X2LEnY3UZSgEkTwAySAgkIwI8bRfFDjTszYCWRMW9lNa4y2meokmq+2k5ia0dpkmknbkWgSSW3GyaaNf0RTx0wxX7A3Pe/tQmIgHXf3vXvvueeee+45v3POXQYY/PCD/CBDGAYkIE2sxg+OXSJmhmH1OaFX6MU5C5PDMCZi5Rg2i+ELGSthwM14NCbgYGSBIZfhFA1H6Zu0OS0NDkMVfg+npdFm+maCvigI0JBIQIMg0BdJGdTj9ylj7nr+b97+Hl8C1+H2xNAvjPqxjIgaKtItICkSnIISeo40QQls4xxjlzgHsnGGvi7BxQiMlSlkPMhfCh67rAUEUQ6CHxW2O7JARCkKnlUQ7UEIyAEQZe4MdDW9xr5OPFuKbubpRxcPDY8da4MOelDfAYJLW+sGKn/Vlmjfv5+NdB4oOfTazJn3tGxZtL9xFNZX7PPRUbjcRg/SMB2EL+gblXn7shbO/WUbF9u/H5XQ9eKO8iMMr9tY35qYoRi20wGuXV/CHaGDk2fdgHwCk5HUXQpCcgHfBV2NjV3jkq4PHTSUSBwuOQALvxPAps6fiftk6P6yJpcm5bB4dFkgoh195mbiSTnkL3jupq7jh4ZZdvjQRVB4PPx3SsVTu5D/6kd85RU66ttXAeuuXYN1E/Y2sMMzZkZiZNRZlRS/ynr9Xr8Cql2RVNbutXslYo7B9ngsFqcDbCQO22PxeIxcpgMxkh6PjUdwkvw6hvRpZeoCFKshDQzJVr++DWyLx+hAXJcGp3TJMV1ME45xCNvHLsWRrpOZSduOoG0zERuIIwuIkhNkBREglQKLiODD45FQE0BTiE214xE2wp8zOt9NjH3GRtDMk7Ehoq2tzCzGxdyMEQJuD0qGIrQ58ApoWQE3D2h1h6zwuB14wYFIDAA5CZ11jT+92gFZ7B7/p7+hV8jFxBl4aG03wLiVXtBbCylLfIJzkPUAvWAw0yvsVdKdBbC6nnruP/RFkHqWJLZ2Auxdtgy+6qTf7l1WswTJcJ6mGVxwXj92UtfU2WXUNX+qBUCxK6D4FR4f/cufG1sZbiSkMcwdMdoxBxTTEXIp4SCXMNhHoFjvTTFP4vkoPReNRmPRCTwa+3qY0DR7qn7Vjh612wRRTaI04HWCnZ+gIzvS/ZJP0+mynphCui4hzmG0id6+aLSv2BV3FQMYDTHrlGQ/SZ+q4ZdF8aLa5Ar8GW3tVNKEj13cF0buMaesx1i9CL/Uo1tM0h+74o9HjQ+UcPaxy8mH9ccwK8KpKA3rHdIUjTKpfIBxuokpxUGBIILm84ATvHh8tAIe2iZj8KvYwUOXawHMVNgxZvlwSa0z8Zkokkxn3ey2nYTsbMO3mPh8cji7zklsPLD9a9f2s2w/uSt/FgSytWzw5bmS3PielU1P56aGrlz6NzlnbT8h/Wtb+1OxIqxBbC9g7kINUbtAEDxsKWSCe46eltCPmaiUxy2IrODIB8EmixaQrU4IAQ6THg6BFpAdWsCquT16DkL9ccIC/FGeP5AuiDExe8bx+QtzWVsmHcm0kdzqecdn5IhRkTc/zfNPm3ns5sw4Pq86l9gyofh6jkTF5iFChjYbbzZQWFvYb8qZAWyGiV9ya+5bFgnzpuWt3FuX8KYMmsiYZepPseBgGhZcOMt0+4Q8fDOTftJjHIuhdaLsFXFM9AclTi9jbGRq8ZvIOykZei77kfo53eoppVPovbGiyV63p/p/dkWETTjmhjTIm8RP284b04bcNYlRsvO6Gp2JeaiIueVHsgJGF2aASlCQLuG8EsBomzb++/AXmwhaOoLhL7iQ4/uc449gWJ56/XWDARn74v/PL1bRBB4TBEyYrqezSkUPHaWjPWCm13ogAzJ66LVpbTEuXccDZlyXxBQ/IrzKOPS7gAkkIyZ0N6joE6M246aDsO1kgucTJ/EdFWA5pbAcTfoSP4hJeBCni7nEn5IclL4kpDgmMMuH8Kpk0+WrBUIeKCyWS0nPVz7NW86Hnl55GxR5KB3+9tszL+wVRulXNTUn6D8SJvIl3PzP46eZST/tQTllTDXTzmxCaTYna7eJAqcWuD1ulBXQsMz5fQEBCfowCF5FVDF/2yysB9OW5veVEtRAFOy41FoeJEiAOZhDiFstsKAwJ8Hijs72q1jWvWx+uKU5XFZDLx189OK8ojW1u0By5dtLHUN/rwkte68PnhnYVbt0bvWiub9w1+f4C0L3hIuXZ8+xlVSt0eb3tgQsmVZnem5R3U0uf/fmFdqiLTvY3nPnet5/v4f9pLB6QX2krnnFQ1tXtN+2ePlAaUNWcfiWwrncn4ca9ml3hFeHHm+u2bq4MhxUZs3bMH/3jgaPUtlVunFjg2/8yRzf3cHsssKZqlnOqyCWworWykW9lXnspk0ffrjpfCreIpjPWbwnFxt3PAkcQgkUuH1auUMf+txJQ0hK1k1zsNaqQdaLMxfoq9AGGxtJQ+fGw53cE/TY8pWhJruZHiMAcCexFS/eGDp6hntiXGE/gvI7163b29ExfiHxNsnqub/a6/QmPoAn4GpZ2c9cZRX5/57IWUNYuubiQBAddhuxAKe6PA5vuV5dkk0VXkMM3zk42W3Awrgka8LQgjZY+tQIffd5+vnHasnHL/cczldyS4r79i6su6Nu9oPQ8lbaid2Pt9/bXtTTynevq7bkPkITV47d+3NugOzo4M3y77Zxbnb2nhWrl0T/kO4u3H1ig33e1lD6JDYjiKkCHOioF0pZv6T6gxxipxLNhFc8xERA48vq5ZfXdL/QV6c8W3PfwjIsZyI3Csvo72e4FpTVwTv/UYNAKtY+8MB84vogZ1Xr5lW38iJdPZ74xunzO4Gk7BARIkytjlyCoPVoIb3IluMfAYRhEoAO2aGXKc2TNAJaSwdzQEeq7jC7TWYF2Y2jrEIXlyVEhunBs5t7K62a7Z6qB0923/+vPT2v7mwpqV/mTEsTiCB5zz735HOP9VbVWtKKZK08uDJ7vcQN02HogGegY5iNnKUHh12ti9/zzHvsauy+tx+e375j94LuA64MV/5MQbZVNT95/re7jlxZVaVuW5Nffsd9TXfOpXcv6m2Bn3x6FgXg/oz+P0h/ce8g2mTEWxVTzzQzrTruNCcRdbu6VY87gLVXc4uSjXfosak7XxWM4oyl+ockmzCFhJXaGwK8e6sCW2T3sLmPnh5qSZtx9JHFL6QBHGnsTjdtWQ8PFygWtQTIkrI84NILfQSC65FUMFsnOYFHEoSmUCD49a4rt3985PTsd8GzB/5KEnzmhhORgVOZPM+yb5KmpRu38jQqviH6826Lrdrxx6DZdFPo2fVbTiy9AUpDJ3SxGYvpK7u+Rhz8D4BCxssAeJxjYGRgYABi/vcdWfH8Nl8ZuNkZQODSliXbkWl2BrA4BwMTiAIAKDsJfgB4nGNgZGBgZwCChWASxGZkQAVyABOTANd4nGNnYGBgHwAMADNUANMAAAAAAAAOAFAAZgCyAMYA5gEeAUgBdAGcAfICLgKOAroDCgOOA7AD6gQ4BHwEuAToBQwFogXoBjYGbAbaB3IAAHicY2BkYGCQY8hlYGcAASYg5gJCBob/YD4DABa6AakAeJxdkE1qg0AYhl8Tk9AIoVDaVSmzahcF87PMARLIMoFAl0ZHY1BHdBJIT9AT9AQ9RQ9Qeqy+yteNMzDzfM+88w0K4BY/cNAMB6N2bUaPPBLukybCLvleeAAPj8JD+hfhMV7hC3u4wxs7OO4NzQSZcI/8Ltwnfwi75E/hAR7wJTyk/xYeY49fYQ/PztM+jbTZ7LY6OWdBJdX/pqs6NYWa+zMxa13oKrA6Uoerqi/JwtpYxZXJ1coUVmeZUWVlTjq0/tHacjmdxuL90OR8O0UEDYMNdtiSEpz5XQGqzlm30kzUdAYFFOb8R7NOZk0q2lwAyz1i7oAr1xoXvrOgtYhZx8wY5KRV269JZ5yGpmzPTjQhvY9je6vEElPOuJP3mWKnP5M3V+YAAAB4nG2P2XLCMAxFfYE4CWlZSveFP8hHOY4gHhw79VLav68hMNOH6kG60mg5YhM22pr9b1vGMMEUM2TgyFGgxBwVbnCLBZZYYY07bHCPBzziCc94wSve8I4PbGeDFj/VydVSOakpG0T0VH1ZHXuq+xhoftHaHq+yV+21o1P7brWLWnvpiExNJpBb/i18q8D9ZxSOcj8oY8iVPjZBBU2+kGIIypokuqTI+cx3qXMq7Z6PQIsx1DYGrQxtLul50YV50rVcCiNJc0enX4qdkNRYe8j2g46+SIMHapXJw1GFdIWH2DfalQknZeTDWsRW2bqlBK3ORIz9AqJUapQAAAA=) format("woff"),url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMlGRXgQAAAEoAAAAVmNtYXDiLxC2AAAB+AAAAUpnbHlm5X8X/gAAA4QAAA7kaGVhZAuHlGsAAADQAAAANmhoZWEOogcfAAAArAAAACRobXR40gAAAAAAAYAAAAB4bG9jYTDILUIAAANEAAAAPm1heHABLwB5AAABCAAAACBuYW1l1cf1oAAAEmgAAAIKcG9zdL2sAHoAABR0AAABeQABAAAHAAAAAKEHAAAAAAAHAAABAAAAAAAAAAAAAAAAAAAAHgABAAAAAQAAD+/W/l8PPPUACwcAAAAAANK0pLcAAAAA0rSktwAAAAAHAAcAAAAACAACAAAAAAAAAAEAAAAeAG0ABwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQcAAZAABQAIBHEE5gAAAPoEcQTmAAADXABXAc4AAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA8QHxHQcAAAAAoQcAAAAAAAABAAAAAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAAAAAAAwAAAAMAAAAcAAEAAAAAAEQAAwABAAAAHAAEACgAAAAGAAQAAQACAADxHf//AAAAAPEB//8AAA8AAAEAAAAAAAAAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AUABmALIAxgDmAR4BSAF0AZwB8gIuAo4CugMKA44DsAPqBDgEfAS4BOgFDAWiBegGNgZsBtoHcgAAAAEAAAAABYsFiwACAAABEQECVQM2BYv76gILAAADAAAAAAZrBmsAAgAOABoAAAkCEwQAAxIABSQAEwIAASYAJzYANxYAFwYAAusBwP5Alf7D/loICAGmAT0BPQGmCAj+Wv7D/f6uBgYBUv39AVIGBv6uAjABUAFQAZsI/lr+w/7D/loICAGmAT0BPQGm+sgGAVL9/QFSBgb+rv39/q4AAAACAAAAAAVABYsAAwAHAAABIREpAREhEQHAASv+1QJVASsBdQQW++oEFgAAAAQAAAAABiAGIAAGABMAJAAnAAABLgEnFRc2NwYHFz4BNSYAJxUWEgEHASERIQERAQYHFT4BNxc3AQcXBNABZVW4A7sCJ3ElKAX+3+Wlzvu3XwFh/p8BKwF1AT5MXU6KO5lf/WCcnAOAZJ4rpbgYGGpbcUacVPQBYziaNP70Aetf/p/+QP6LAfb+wjsdmhJEMZhfBJacnAAAAQAAAAAEqwXWAAUAAAERIQERAQILASoBdv6KBGD+QP6LBKr+iwAAAAIAAAAABWYF1gAGAAwAAAEuAScRPgEBESEBEQEFZQFlVFRl/BEBKwF1/osDgGSeK/2mK54BRP5A/osEqv6LAAADAAAAAAYgBg8ABQAMABoAABMRIQERAQUuAScRPgEDFRYSFwYCBxU2ADcmAOABKwF1/osCxQFlVVVluqXOAwPOpeUBIQUF/t8EYP5A/osEqv6L4GSeK/2mK54C85o0/vS1tf70NJo4AWL19QFiAAAABAAAAAAFiwWLAAUACwARABcAAAEjESE1IwMzNTM1IQEjFSERIwMVMxUzEQILlgF24JaW4P6KA4DgAXaW4OCWAuv+ipYCCuCW/ICWAXYCoJbgAXYABAAAAAAFiwWLAAUACwARABcAAAEzFTMRIRMjFSERIwEzNTM1IRM1IxEhNQF14Jb+iuDgAXaWAcCW4P6KlpYBdgJV4AF2AcCWAXb76uCWAcDg/oqWAAAAAAIAAAAABdYF1gAPABMAAAEhDgEHER4BFyE+ATcRLgEDIREhBUD8gD9VAQFVPwOAP1UBAVU//IADgAXVAVU//IA/VQEBVT8DgD9V++wDgAAABgAAAAAGawZrAAcADAATABsAIAAoAAAJASYnDgEHASUuAScBBSEBNhI3JgUBBgIHFhchBR4BFwEzARYXPgE3AQK+AWROVIfwYQESA4416aH+7gLl/dABelxoAQH8E/7dXGgBAQ4CMP3kNemhARJ4/t1OVIfwYf7uA/ACaBIBAVhQ/id3pfY+/idL/XNkAQGTTU0B+GT+/5NNSEul9j4B2f4IEgEBWFAB2QAAAAUAAAAABmsF1gAPABMAFwAbAB8AAAEhDgEHER4BFyE+ATcRLgEBIRUhASE1IQUhNSE1ITUhBdX7VkBUAgJUQASqQFQCAlT7FgEq/tYC6v0WAuoBwP7WASr9FgLqBdUBVT/8gD9VAQFVPwOAP1X9rJX+1ZWVlZaVAAMAAAAABiAF1gAPACcAPwAAASEOAQcRHgEXIT4BNxEuAQEjNSMVMzUzFRQGByMuAScRPgE3Mx4BFQUjNSMVMzUzFQ4BByMuATURNDY3Mx4BFwWL++o/VAICVD8EFj9UAgJU/WtwlZVwKiDgICoBASog4CAqAgtwlZVwASog4CAqKiDgICoBBdUBVT/8gD9VAQFVPwOAP1X99yXgJUogKgEBKiABKiAqAQEqIEol4CVKICoBASogASogKgEBKiAAAAYAAAAABiAE9gADAAcACwAPABMAFwAAEzM1IxEzNSMRMzUjASE1IREhNSERFSE14JWVlZWVlQErBBX76wQV++sEFQM1lv5AlQHAlf5Alv5AlQJVlZUAAAABAAAAAAYgBmwALgAAASIGBwE2NCcBHgEzPgE3LgEnDgEHFBcBLgEjDgEHHgEXMjY3AQYHHgEXPgE3LgEFQCtKHv3sBwcCDx5OLF9/AgJ/X19/Agf98R5OLF9/AgJ/XyxOHgIUBQEDe1xcewMDewJPHxsBNxk2GQE0HSACf19ffwICf18bGf7NHCACf19ffwIgHP7KFxpcewICe1xdewAAAgAAAAAGWQZrAEMATwAAATY0Jzc+AScDLgEPASYvAS4BJyEOAQ8BBgcnJgYHAwYWHwEGFBcHDgEXEx4BPwEWHwEeARchPgE/ATY3FxY2NxM2JicFLgEnPgE3HgEXDgEFqwUFngoGB5YHGQ26OkQcAxQP/tYPFAIcRTm6DRoHlQcFC50FBZ0LBQeVBxoNujlFHAIUDwEqDxQCHEU5ug0aB5UHBQv9OG+UAgKUb2+UAgKUAzckSiR7CRoNAQMMCQVLLRzGDhEBAREOxhwtSwUJDP79DBsJeyRKJHsJGg3+/QwJBUstHMYOEQEBEQ7GHC1LBQkMAQMMGwlBApRvb5QCApRvb5QAAAAAAQAAAAAGawZrAAsAABMSAAUkABMCACUEAJUIAaYBPQE9AaYICP5a/sP+w/5aA4D+w/5aCAgBpgE9AT0BpggI/loAAAACAAAAAAZrBmsACwAXAAABBAADEgAFJAATAgABJgAnNgA3FgAXBgADgP7D/loICAGmAT0BPQGmCAj+Wv7D/f6uBgYBUv39AVIGBv6uBmsI/lr+w/7D/loICAGmAT0BPQGm+sgGAVL9/QFSBgb+rv39/q4AAAMAAAAABmsGawALABcAIwAAAQQAAxIABSQAEwIAASYAJzYANxYAFwYAAw4BBy4BJz4BNx4BA4D+w/5aCAgBpgE9AT0BpggI/lr+w/3+rgYGAVL9/QFSBgb+rh0Cf19ffwICf19ffwZrCP5a/sP+w/5aCAgBpgE9AT0BpvrIBgFS/f0BUgYG/q79/f6uAk9ffwICf19ffwICfwAAAAQAAAAABiAGIAAPABsAJQApAAABIQ4BBxEeARchPgE3ES4BASM1IxUjETMVMzU7ASEeARcRDgEHITczNSMFi/vqP1QCAlQ/BBY/VAICVP1rcJVwcJVwlgEqICoBASog/tZwlZUGIAJUP/vqP1QCAlQ/BBY/VPyClZUBwLu7ASog/tYgKgFw4AACAAAAAAZrBmsACwAXAAABBAADEgAFJAATAgATBwkBJwkBNwkBFwEDgP7D/loICAGmAT0BPQGmCAj+Wjhp/vT+9GkBC/71aQEMAQxp/vUGawj+Wv7D/sP+WggIAaYBPQE9Aab8EWkBC/71aQEMAQxp/vUBC2n+9AABAAAAAAXWBrYAFgAAAREJAREeARcOAQcuAScjFgAXNgA3JgADgP6LAXW+/QUF/b6+/QWVBgFR/v4BUQYG/q8FiwEq/ov+iwEqBP2/vv0FBf2+/v6vBgYBUf7+AVEAAAABAAAAAAU/BwAAFAAAAREjIgYdASEDIxEhESMRMzU0NjMyBT+dVjwBJSf+/s7//9Ctkwb0/vhISL3+2P0JAvcBKNq6zQAAAAAEAAAAAAaOBwAAMABFAGAAbAAAARQeAxUUBwYEIyImJyY1NDY3NiUuATU0NwYjIiY1NDY3PgEzIQcjHgEVFA4DJzI2NzY1NC4CIyIGBwYVFB4DEzI+AjU0LgEvASYvAiYjIg4DFRQeAgEzFSMVIzUjNTM1MwMfQFtaQDBI/uqfhOU5JVlKgwERIB8VLhaUy0g/TdNwAaKKg0pMMUVGMZImUBo1Ij9qQCpRGS8UKz1ZNjprWzcODxMeChwlThAgNWhvUzZGcX0Da9XVadTUaQPkJEVDUIBOWlN6c1NgPEdRii5SEipAKSQxBMGUUpo2QkBYP4xaSHNHO0A+IRs5ZjqGfVInITtlLmdnUjT8lxo0Xj4ZMCQYIwsXHTgCDiQ4XTtGazsdA2xs29ts2QADAAAAAAaABmwAAwAOACoAAAERIREBFgYrASImNDYyFgERIRE0JiMiBgcGFREhEhAvASEVIz4DMzIWAd3+tgFfAWdUAlJkZ6ZkBI/+t1FWP1UVC/63AgEBAUkCFCpHZz+r0ASP/CED3wEySWJik2Fh/N39yAISaXdFMx4z/dcBjwHwMDCQIDA4H+MAAAEAAAAABpQGAAAxAAABBgcWFRQCDgEEIyAnFjMyNy4BJxYzMjcuAT0BFhcuATU0NxYEFyY1NDYzMhc2NwYHNgaUQ18BTJvW/tKs/vHhIyvhsGmmHyEcKypwk0ROQk4seQFbxgi9hoxgbWAlaV0FaGJFDhyC/v3ut22RBIoCfWEFCxexdQQmAyyOU1hLlbMKJiSGvWYVOXM/CgAAAAEAAAAABYAHAAAiAAABFw4BBwYuAzURIzU+BDc+ATsBESEVIREUHgI3NgUwUBewWWitcE4hqEhyRDAUBQEHBPQBTf6yDSBDME4Bz+0jPgECOFx4eDoCINcaV11vVy0FB/5Y/P36HjQ1HgECAAEAAAAABoAGgABKAAABFAIEIyInNj8BHgEzMj4BNTQuASMiDgMVFBYXFj8BNjc2JyY1NDYzMhYVFAYjIiY3PgI1NCYjIgYVFBcDBhcmAjU0EiQgBBIGgM7+n9FvazsTNhRqPXm+aHfijmm2f1srUE0eCAgGAgYRM9Gpl6mJaz1KDgglFzYyPlYZYxEEzv7OAWEBogFhzgOA0f6fziBdR9MnOYnwlnLIfjpgfYZDaJ4gDCAfGAYXFD1al9mkg6ruVz0jdVkfMkJyVUkx/l5Ga1sBfOnRAWHOzv6fAAAHAAAAAAcABM8ADgAXACoAPQBQAFoAXQAAARE2HgIHDgEHBiYjJyY3FjY3NiYHERQFFjY3PgE3LgEnIwYfAR4BFw4BFxY2Nz4BNy4BJyMGHwEeARcUBhcWNjc+ATcuAScjBh8BHgEXDgEFMz8BFTMRIwYDJRUnAxyEzZRbCA2rgketCAEBqlRoCglxYwF+IiEOIysBAkswHQEECiQ0AgE+YyIhDiIsAQJLMB4BBQokNAE/YyIhDiIsAQJLMB4BBQokNAEBPvmD7kHhqs0s0gEnjgHJAv0FD2a9gIrADwUFAwPDAlVMZ3MF/pUHwgc1HTyWV325PgsJED+oY3G9TAc1HTyWV325PgsJED+oY3G9TAc1HTyWV325PgsJED+oY3G9UmQBZQMMR/61g/kBAAAAAAAQAMYAAQAAAAAAAQAHAAAAAQAAAAAAAgAHAAcAAQAAAAAAAwAHAA4AAQAAAAAABAAHABUAAQAAAAAABQALABwAAQAAAAAABgAHACcAAQAAAAAACgArAC4AAQAAAAAACwATAFkAAwABBAkAAQAOAGwAAwABBAkAAgAOAHoAAwABBAkAAwAOAIgAAwABBAkABAAOAJYAAwABBAkABQAWAKQAAwABBAkABgAOALoAAwABBAkACgBWAMgAAwABBAkACwAmAR5WaWRlb0pTUmVndWxhclZpZGVvSlNWaWRlb0pTVmVyc2lvbiAxLjBWaWRlb0pTR2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AVgBpAGQAZQBvAEoAUwBSAGUAZwB1AGwAYQByAFYAaQBkAGUAbwBKAFMAVgBpAGQAZQBvAEoAUwBWAGUAcgBzAGkAbwBuACAAMQAuADAAVgBpAGQAZQBvAEoAUwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4EcGxheQtwbGF5LWNpcmNsZQVwYXVzZQt2b2x1bWUtbXV0ZQp2b2x1bWUtbG93CnZvbHVtZS1taWQLdm9sdW1lLWhpZ2gQZnVsbHNjcmVlbi1lbnRlcg9mdWxsc2NyZWVuLWV4aXQGc3F1YXJlB3NwaW5uZXIJc3VidGl0bGVzCGNhcHRpb25zCGNoYXB0ZXJzBXNoYXJlA2NvZwZjaXJjbGUOY2lyY2xlLW91dGxpbmUTY2lyY2xlLWlubmVyLWNpcmNsZQJoZAZjYW5jZWwGcmVwbGF5CGZhY2Vib29rBWdwbHVzCGxpbmtlZGluB3R3aXR0ZXIGdHVtYmxyCXBpbnRlcmVzdBFhdWRpby1kZXNjcmlwdGlvbgAAAAAA) format("truetype");font-weight:400;font-style:normal}.vjs-icon-play,.video-js .vjs-big-play-button,.video-js .vjs-play-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play:before,.video-js .vjs-big-play-button:before,.video-js .vjs-play-control:before{content:'\f101'}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:'\f102'}.vjs-icon-pause,.video-js .vjs-play-control.vjs-playing{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pause:before,.video-js .vjs-play-control.vjs-playing:before{content:'\f103'}.vjs-icon-volume-mute,.video-js .vjs-mute-control.vjs-vol-0,.video-js .vjs-volume-menu-button.vjs-vol-0{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mute:before,.video-js .vjs-mute-control.vjs-vol-0:before,.video-js .vjs-volume-menu-button.vjs-vol-0:before{content:'\f104'}.vjs-icon-volume-low,.video-js .vjs-mute-control.vjs-vol-1,.video-js .vjs-volume-menu-button.vjs-vol-1{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-low:before,.video-js .vjs-mute-control.vjs-vol-1:before,.video-js .vjs-volume-menu-button.vjs-vol-1:before{content:'\f105'}.vjs-icon-volume-mid,.video-js .vjs-mute-control.vjs-vol-2,.video-js .vjs-volume-menu-button.vjs-vol-2{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mid:before,.video-js .vjs-mute-control.vjs-vol-2:before,.video-js .vjs-volume-menu-button.vjs-vol-2:before{content:'\f106'}.vjs-icon-volume-high,.video-js .vjs-mute-control,.video-js .vjs-volume-menu-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-high:before,.video-js .vjs-mute-control:before,.video-js .vjs-volume-menu-button:before{content:'\f107'}.vjs-icon-fullscreen-enter,.video-js .vjs-fullscreen-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-enter:before,.video-js .vjs-fullscreen-control:before{content:'\f108'}.vjs-icon-fullscreen-exit,.video-js.vjs-fullscreen .vjs-fullscreen-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-exit:before,.video-js.vjs-fullscreen .vjs-fullscreen-control:before{content:'\f109'}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:'\f10a'}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:'\f10b'}.vjs-icon-subtitles,.video-js .vjs-subtitles-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-subtitles:before,.video-js .vjs-subtitles-button:before{content:'\f10c'}.vjs-icon-captions,.video-js .vjs-captions-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-captions:before,.video-js .vjs-captions-button:before{content:'\f10d'}.vjs-icon-chapters,.video-js .vjs-chapters-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-chapters:before,.video-js .vjs-chapters-button:before{content:'\f10e'}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:'\f10f'}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:'\f110'}.vjs-icon-circle,.video-js .vjs-mouse-display,.video-js .vjs-play-progress,.video-js .vjs-volume-level{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle:before,.video-js .vjs-mouse-display:before,.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before{content:'\f111'}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:'\f112'}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:'\f113'}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:'\f114'}.vjs-icon-cancel,.video-js .vjs-control.vjs-close-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cancel:before,.video-js .vjs-control.vjs-close-button:before{content:'\f115'}.vjs-icon-replay{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-replay:before{content:'\f116'}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:'\f117'}.vjs-icon-gplus{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-gplus:before{content:'\f118'}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:'\f119'}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:'\f11a'}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:'\f11b'}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:'\f11c'}.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio-description:before{content:'\f11d'}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js *,.video-js :before,.video-js :after{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.video-js.vjs-fluid,.video-js.vjs-16-9,.video-js.vjs-4-3{width:100%;max-width:100%;height:0}.video-js.vjs-16-9{padding-top:56.25%}.video-js.vjs-4-3{padding-top:75%}.video-js.vjs-fill{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen{width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1;visibility:visible}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66A8CC}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.5em;width:3em;display:block;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2B333F;background-color:rgba(43,51,63,.7);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.75em;margin-left:-1.5em}.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus{outline:0;border-color:#fff;background-color:#73859f;background-color:rgba(115,133,159,.5);-webkit-transition:all 0s;-moz-transition:all 0s;-o-transition:all 0s;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button,.vjs-error .vjs-big-play-button{display:none}.video-js button{background:0 0;border:0;color:inherit;display:inline-block;overflow:visible;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.vjs-menu-button{cursor:pointer}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;overflow:auto}.vjs-scrubbing .vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-menu li:focus,.vjs-menu li:hover{outline:0;background-color:#73859f;background-color:rgba(115,133,159,.5)}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2B333F}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0;margin-bottom:1.5em;border-top-color:rgba(43,51,63,.7)}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2B333F;background-color:rgba(43,51,63,.7);position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-workinghover .vjs-menu-button-popup:hover .vjs-menu,.vjs-menu-button-popup .vjs-menu.vjs-lock-showing{display:block}.video-js .vjs-menu-button-inline{-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline:hover,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.video-js .vjs-menu-button-inline.vjs-slider-active{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-menu-button-inline:hover .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline.vjs-slider-active .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2B333F;background-color:rgba(43,51,63,.7)}.vjs-has-started .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:visible;opacity:1;-webkit-transition:visibility .1s,opacity .1s;-moz-transition:visibility .1s,opacity .1s;-o-transition:visibility .1s,opacity .1s;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar,.vjs-error .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}@media \0screen{.vjs-user-inactive.vjs-playing .vjs-control-bar :before{content:""}}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{outline:0;position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-control:before{font-size:1.8em;line-height:1.67}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:0 0 1em #fff}.video-js .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;min-width:4em}.vjs-live .vjs-progress-control{display:none}.video-js .vjs-progress-holder{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;transition:all .2s;height:.3em}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.666666666666666666em}.video-js .vjs-progress-control:hover .vjs-mouse-display:after,.video-js .vjs-progress-control:hover .vjs-play-progress:after{display:block;font-size:.6em}.video-js .vjs-progress-holder .vjs-play-progress,.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div{position:absolute;display:block;height:.3em;margin:0;padding:0;width:0;left:0;top:0}.video-js .vjs-mouse-display:before{display:none}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{position:absolute;top:-.333333333333333em;right:-.5em;font-size:.9em}.video-js .vjs-mouse-display:after,.video-js .vjs-play-progress:after{display:none;position:absolute;top:-3.4em;right:-1.5em;font-size:.9em;color:#000;content:attr(data-current-time);padding:6px 8px 8px;background-color:#fff;background-color:rgba(255,255,255,.8);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em}.video-js .vjs-play-progress:before,.video-js .vjs-play-progress:after{z-index:1}.video-js .vjs-load-progress{background:#bfc7d3;background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:#fff;background:rgba(115,133,159,.75)}.video-js.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display,.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display:after{visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display,.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display:after{display:none}.video-js .vjs-progress-control .vjs-mouse-display:after{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.video-js .vjs-slider{outline:0;position:relative;cursor:pointer;padding:0;margin:0 .45em;background-color:#73859f;background-color:rgba(115,133,159,.5)}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control,.video-js .vjs-volume-menu-button{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-volume-control{width:5em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.vjs-menu-button-popup.vjs-volume-menu-button .vjs-menu{display:block;width:0;height:0;border-top-color:transparent}.vjs-menu-button-popup.vjs-volume-menu-button-vertical .vjs-menu{left:.5em;height:8em}.vjs-menu-button-popup.vjs-volume-menu-button-horizontal .vjs-menu{left:-2em}.vjs-menu-button-popup.vjs-volume-menu-button .vjs-menu-content{height:0;width:0;overflow-x:hidden;overflow-y:hidden}.vjs-volume-menu-button-vertical:hover .vjs-menu-content,.vjs-volume-menu-button-vertical:focus .vjs-menu-content,.vjs-volume-menu-button-vertical.vjs-slider-active .vjs-menu-content,.vjs-volume-menu-button-vertical .vjs-lock-showing .vjs-menu-content{height:8em;width:2.9em}.vjs-volume-menu-button-horizontal:hover .vjs-menu-content,.vjs-volume-menu-button-horizontal:focus .vjs-menu-content,.vjs-volume-menu-button-horizontal .vjs-slider-active .vjs-menu-content,.vjs-volume-menu-button-horizontal .vjs-lock-showing .vjs-menu-content{height:2.9em;width:8em}.vjs-volume-menu-button.vjs-menu-button-inline .vjs-menu-content{background-color:transparent!important}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-poster img{display:block;vertical-align:middle;margin:0 auto;max-height:100%;padding:0;width:100%}.vjs-has-started .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster{display:block}.vjs-controls-disabled .vjs-poster{display:none}.vjs-using-native-controls .vjs-poster{display:none}.video-js .vjs-live-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;width:auto;text-align:left}.video-js .vjs-time-control{-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control{display:none}.video-js .vjs-current-time,.vjs-no-flex .vjs-current-time{display:none}.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em;background-color:#000;background-color:rgba(0,0,0,.5)}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{-moz-transform:translateY(-3em);-ms-transform:translateY(-3em);-o-transform:translateY(-3em);-webkit-transform:translateY(-3em);transform:translateY(-3em)}.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{-moz-transform:translateY(-1.5em);-ms-transform:translateY(-1.5em);-o-transform:translateY(-1.5em);-webkit-transform:translateY(-1.5em);transform:translateY(-1.5em)}.video-js .vjs-fullscreen-control{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-playback-rate .vjs-playback-rate-value{font-size:1.5em;line-height:2;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:'X';font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-shadow:.05em .05em .1em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block}.vjs-loading-spinner:before,.vjs-loading-spinner:after{content:"";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:before,.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(0.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(0.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;-webkit-animation-delay:.44s;animation-delay:.44s}@keyframes vjs-spinner-spin{100%{transform:rotate(360deg)}}@-webkit-keyframes vjs-spinner-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-custom-control-spacer{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer{width:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button{display:none}.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-menu-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button{display:none}.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button{display:none}.vjs-caption-settings{position:relative;top:1em;background-color:#2B333F;background-color:rgba(43,51,63,.75);color:#fff;margin:0 auto;padding:.5em;height:15em;font-size:12px;width:40em}.vjs-caption-settings .vjs-tracksettings{top:0;bottom:2em;left:0;right:0;position:absolute;overflow:auto}.vjs-caption-settings .vjs-tracksettings-colors,.vjs-caption-settings .vjs-tracksettings-font{float:left}.vjs-caption-settings .vjs-tracksettings-colors:after,.vjs-caption-settings .vjs-tracksettings-font:after,.vjs-caption-settings .vjs-tracksettings-controls:after{clear:both}.vjs-caption-settings .vjs-tracksettings-controls{position:absolute;bottom:1em;right:1em}.vjs-caption-settings .vjs-tracksetting{margin:5px;padding:3px;min-height:40px}.vjs-caption-settings .vjs-tracksetting label{display:block;width:100px;margin-bottom:5px}.vjs-caption-settings .vjs-tracksetting span{display:inline;margin-left:5px}.vjs-caption-settings .vjs-tracksetting>div{margin-bottom:5px;min-height:20px}.vjs-caption-settings .vjs-tracksetting>div:last-child{margin-bottom:0;padding-bottom:0;min-height:0}.vjs-caption-settings label>input{margin-right:10px}.vjs-caption-settings input[type=button]{width:40px;height:40px}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:-webkit-linear-gradient(-90deg,rgba(0,0,0,.8),rgba(255,255,255,0));background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0))}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1} \ No newline at end of file diff --git a/public/css/vjsnew.css b/public/css/vjsnew.css new file mode 100644 index 0000000..3e3d678 --- /dev/null +++ b/public/css/vjsnew.css @@ -0,0 +1,323 @@ +.video-js .vjs-menu-button-inline.vjs-slider-active, +.video-js .vjs-menu-button-inline:focus, +.video-js .vjs-menu-button-inline:hover, +.video-js.vjs-no-flex .vjs-menu-button-inline { + width: 10em +} +.video-js .vjs-controls-disabled .vjs-big-play-button { + display: none!important +} +.video-js .vjs-control { + width: 3em +} +.video-js .vjs-menu-button-inline:before { + width: 1.5em +} +.vjs-menu-button-inline .vjs-menu { + left: 3em +} +.video-js.vjs-paused .vjs-big-play-button, +.vjs-paused.vjs-has-started.video-js .vjs-big-play-button { + display: block +} +.video-js .vjs-load-progress div, +.vjs-seeking .vjs-big-play-button, +.vjs-waiting .vjs-big-play-button { + display: none!important +} +.video-js .vjs-mouse-display:after, +.video-js .vjs-play-progress:after { + padding: 0 .4em .3em +} +.video-js.vjs-ended .vjs-loading-spinner { + display: none +} +.video-js.vjs-ended .vjs-big-play-button { + display: block!important +} +.video-js *, +.video-js:after, +.video-js:before { + box-sizing: inherit; + font-size: inherit; + color: inherit; + line-height: inherit +} +.video-js.vjs-fullscreen, +.video-js.vjs-fullscreen .vjs-tech { + width: 100%!important; + height: 100%!important +} +.video-js { + font-size: 14px; + overflow: hidden +} +.video-js .vjs-control { + color: inherit +} +.video-js .vjs-menu-button-inline:hover, +.video-js.vjs-no-flex .vjs-menu-button-inline { + width: 8.35em +} +.video-js .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:hover .vjs-menu .vjs-menu-content { + height: 3em; + width: 6.35em +} +.video-js .vjs-control:focus:before, +.video-js .vjs-control:hover:before { + text-shadow: 0 0 0.1em #1fb2b0, 0 0 0.1em #1fb2b0, 0 0 0.5em #1fb2b0; +} +.video-js .vjs-spacer, +.video-js .vjs-time-control { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1 1 auto; + -moz-box-flex: 1 1 auto; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto +} +.video-js .vjs-time-control { + -webkit-box-flex: 0 1 auto; + -moz-box-flex: 0 1 auto; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: auto +} +.video-js .vjs-time-control.vjs-time-divider { + width: 14px +} +.video-js .vjs-time-control.vjs-time-divider div { + width: 100%; + text-align: center +} +.video-js .vjs-time-control.vjs-current-time { + margin-left: 1em +} +.video-js .vjs-time-control .vjs-current-time-display, +.video-js .vjs-time-control .vjs-duration-display { + width: 100% +} +.video-js .vjs-time-control .vjs-current-time-display { + text-align: right +} +.video-js .vjs-time-control .vjs-duration-display { + text-align: left +} +.video-js .vjs-play-progress:before, +.video-js .vjs-progress-control .vjs-play-progress:before, +.video-js .vjs-remaining-time, +.video-js .vjs-volume-level:after, +.video-js .vjs-volume-level:before, +.video-js.vjs-live .vjs-time-control.vjs-current-time, +.video-js.vjs-live .vjs-time-control.vjs-duration, +.video-js.vjs-live .vjs-time-control.vjs-time-divider, +.video-js.vjs-no-flex .vjs-time-control.vjs-remaining-time { + display: none +} +.video-js.vjs-no-flex .vjs-time-control { + display: table-cell; + width: 4em +} +.video-js .vjs-progress-control { + position: absolute; + left: 0; + right: 0; + width: 100%; + height: .5em; + top: -.5em +} +.video-js .vjs-progress-control .vjs-load-progress, +.video-js .vjs-progress-control .vjs-play-progress, +.video-js .vjs-progress-control .vjs-progress-holder { + height: 100% +} +.video-js .vjs-progress-control .vjs-progress-holder { + margin: 0 +} +.video-js .vjs-progress-control:hover { + height: 1.5em; + top: -1.5em +} +.video-js .vjs-control-bar { + -webkit-transition: -webkit-transform .1s ease 0s; + -moz-transition: -moz-transform .1s ease 0s; + -ms-transition: -ms-transform .1s ease 0s; + -o-transition: -o-transform .1s ease 0s; + transition: transform .1s ease 0s +} +.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active .vjs-control-bar, +.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive .vjs-control-bar, +.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active .vjs-control-bar, +.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar, +.video-js.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar { + visibility: visible; + opacity: 1; + -webkit-backface-visibility: hidden; + -webkit-transform: translateY(3em); + -moz-transform: translateY(3em); + -ms-transform: translateY(3em); + -o-transform: translateY(3em); + transform: translateY(3em); + -webkit-transition: -webkit-transform 1s ease 0s; + -moz-transition: -moz-transform 1s ease 0s; + -ms-transition: -ms-transform 1s ease 0s; + -o-transition: -o-transform 1s ease 0s; + transition: transform 1s ease 0s +} +.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active .vjs-progress-control, +.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive .vjs-progress-control, +.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active .vjs-progress-control, +.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-progress-control, +.video-js.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-progress-control { + height: .25em; + top: -.25em; + pointer-events: none; + -webkit-transition: height 1s, top 1s; + -moz-transition: height 1s, top 1s; + -ms-transition: height 1s, top 1s; + -o-transition: height 1s, top 1s; + transition: height 1s, top 1s +} +.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active.vjs-fullscreen .vjs-progress-control, +.video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive.vjs-fullscreen .vjs-progress-control, +.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active.vjs-fullscreen .vjs-progress-control, +.video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive.vjs-fullscreen .vjs-progress-control, +.video-js.vjs-has-started.vjs-playing.vjs-user-inactive.vjs-fullscreen .vjs-progress-control { + opacity: 0; + -webkit-transition: opacity 1s ease 1s; + -moz-transition: opacity 1s ease 1s; + -ms-transition: opacity 1s ease 1s; + -o-transition: opacity 1s ease 1s; + transition: opacity 1s ease 1s +} +.video-js.vjs-live .vjs-live-control { + margin-left: 1em +} +.video-js .vjs-big-play-button { + top: 50%; + left: 50%; + margin-left: -1em; + width: 2em; + border: none; + color: #fff; + -webkit-transition: border-color .4s, outline .4s, background-color .4s; + -moz-transition: border-color .4s, outline .4s, background-color .4s; + -ms-transition: border-color .4s, outline .4s, background-color .4s; + -o-transition: border-color .4s, outline .4s, background-color .4s; + transition: border-color .4s, outline .4s, background-color .4s; + background-color: rgba(0, 0, 0, .45); + font-size: 2.5em; + border-radius: 50%; + height: 2em!important; + line-height: 2em!important; + margin-top: -1em!important +} +.video-js .vjs-menu-button-popup .vjs-menu { + left: -3em +} +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content { + background-color: transparent; + width: 12em; + left: -1.5em; + padding-bottom: .5em +} +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item, +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-title { + background-color: #151b17; + margin: .3em 0; + padding: .5em; + border-radius: .3em +} +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item.vjs-selected { + background-color: #2483d5 +} +.video-js .vjs-big-play-button:active, +.video-js .vjs-big-play-button:focus, +.video-js:hover .vjs-big-play-button { + background-color: #1fb2b0 +} +.video-js .vjs-loading-spinner { + border-color: #1fb2b0 +} +.video-js .vjs-control-bar2 { + background-color: #161618 +} +.video-js .vjs-control-bar { + background-color: #161618!important; + color: #fff; + font-size: 11px +} +.video-js .vjs-play-progress, +.video-js .vjs-volume-level { + background-color: #1fb2b0 +} + +/* Custom */ +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content { + background-color: #161618; + width: 12em; + left: -1.5em; + padding-bottom: 0rem; +} + +.vjs-menu-button-popup .vjs-menu .vjs-menu-content { + background-color: #2B333F; + background-color: rgba(43,51,63,.7); + position: absolute; + width: 100%; + bottom: 1.5em; + max-height: none; +} + +.vjs-volume-control.vjs-control { + width: 6rem; +} + +.video-js .vjs-control-bar { + background-color: rgba(22, 22, 24, 0.89)!important; + color: #fff; + font-size: 13px; + font-family: "Oswald",sans-serif; +} + +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content { + background-color: #161618; + width: 5em; + left: 1.5em; + padding-bottom: 0rem; + padding-left: 5px; + padding-right: 5px; +} + +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item, .video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-title { + background-color: #3b3938; + margin: .3em 0; + padding: 0; + border-radius: 0; +} + +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item:hover, .video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-title { + background-color: #707070; +} + +.video-js .vjs-mouse-display:after, .video-js .vjs-play-progress:after { + display: none; + position: absolute; + top: -3em; + right: -1.5em; + font-size: .9em; + color: #fff; + content: attr(data-current-time); + padding: 6px 8px 8px; + background-color: #fff; + background-color: rgb(58, 57, 56); + -webkit-border-radius: .3em; + -moz-border-radius: .3em; + border-radius: .3em; + font-family: "Oswald",sans-serif; +} diff --git a/public/css/w0bmcustom.css b/public/css/w0bmcustom.css new file mode 100644 index 0000000..e8406f4 --- /dev/null +++ b/public/css/w0bmcustom.css @@ -0,0 +1,3738 @@ + /*@import url('https://fonts.googleapis.com/css?family=Orbitron');*/ +/*@import url('https://fonts.googleapis.com/css?family=Oswald');*/ +/*Fuck you if you don't like Oswald ;)))*/ + +/* Oswald Local Test */ +/* cyrillic */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(//s.w0bm.com/fonts/Oswald_Cyrillic.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(//s.w0bm.com/fonts/Odwald_Vietnamese.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(//s.w0bm.com/fonts/Oswald_Latin_ext.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(//s.w0bm.com/fonts/Oswald_latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* Oswal Test End */ + +@font-face { + font-family: "VCR"; + src: url("/fonts/vcr.ttf"); +} + +.catfart { + display: none; +} + +img[alt="christmas"] { + display: none !important; +} + +/*body::after { + bottom: -5px; + opacity: 1; + z-index: -1; + position: fixed !important; + content: url(https://nogf.club/uploads/ezgif.com-resize.gif); + right: 5px !important; +}*/ + +/* Abu den Hut aufsetzen */ +/*img[alt="christmas"] { + position: absolute; + top: -5px; + width: 90px; + left: -21px; +} + +@media (max-width: 48em) { +.navbar-brand > img[alt="christmas"] { + margin-left: 5px; + height: 49px; + margin-top: 0px; + top: -12px; + left: -26px; +} +}*/ + +/* APRILSCHERZ XDDDD */ +/* +.panel-body:hover { + filter: blur(5px); +} + +span:hover { + transform: scaleX(-1); +} + +a:hover { + transform: scaleX(-1); +} +*/ + +body { + background-color: #161618; +} + +/*body::after { + bottom: -5px; + opacity: 1; + z-index: -1; + position: fixed !important; + content: url(https://w0bm.com/rip_w.png); + right: 5px !important; +}*/ + +a:focus { + outline: none; +} + +/*body::after { + position: fixed !important; + content: url("https://koyaanis.com/i/kawaii2.gif"); + bottom: -5px; + right: -20px !important; + left: 0px !important; + opacity: 1; + z-index: -1; +}*/ + +.indexedit input, .indexedit select { + display: none; +} + +div.table { + display: table; +} +div.tr { + display: table-row; +} +div.td { + display: table-cell; +} +div.thead { + display: table-header-group; +} +div.th { + display: table-cell; +} +div.tbody { + display: table-row-group; +} + +.catfart { + position: fixed; + width: 100px; + height: 120px; + right: 0; + bottom: 0; + overflow: hidden; +} + +.catfart:before { + content: ""; + position: absolute; + width: inherit; + height: inherit; + top: 10px; + background-image: url("/images/catfart/cut.png"); + transition: transform 0.1s; +} + +.catfart.farting:before { + background-image: url("/images/catfart/cutf.png"); + transform: rotate(-7deg); + transform-origin: 100% 100%; +} + +.flashcontainer { + position:absolute; + top:20px; + opacity: 0.8; + z-index: 5; + width: 100% +} +.flashcontainer:empty { + display:none; +} +.navbar { + margin-bottom: 0; +} +.navbar-form > .form-group > input{ + background: rgba(32, 32, 32, 0.3); + color: #c8c8c8; +} +#bg { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 100%; + height: 100%; + -webkit-filter: blur(100px); + filter:blur(100px); + transform: translate3d(0, 0, 0); + z-index: -1; +} + +.navbar-inverse { + background-color: rgba(32, 32, 32, 0.6); + border: 0; + z-index: 3; +} +.vertical-align { + min-height: calc(100% - 50px); + min-height: calc(100vh - 50px); + display: flex; + align-items: center; +} +.wrapper { + width: 100%; +} +.row { + width: 100%; +} + +.tags { + width: 350px; + text-overflow: ellipsis; + background: rgba(32, 32, 32, 0.6); +} + +.comments { + background: rgba(32, 32, 32, 0.6); + padding: 0 2px 2px; + overflow-y: hidden; + border-right: 0 solid #3F3F3F; +} + +.comments p { + margin: 0; + padding-bottom: 5px; + padding-top: 5px; +} + +.comments blockquote { + color: #80FF00; + font-size: 1em; + padding: 0; + margin: 0; + border: 0; +} +#commentForm textarea { + color: #c8c8c8; + background: rgba(90, 88, 88, 0.4) none repeat scroll 0 0; + height: 2.7em; + resize: vertical; + -webkit-transition: height 0.8s; + -moz-transition: height 0.8s; + transition: height 0.8s; +} +#commentForm textarea:active, #commentForm textarea:focus, #commentForm textarea:valid { + height: 8em; +} +a[rel=extern]:after { + font-family: 'FontAwesome'; + content: "\f08e"; + font-size: 0.8em; + padding-left: 2px; +} +.navbar-nav > li { + font-family: Oswald; +} +.navbar-inverse .navbar-nav > li > a:hover { + color: #1FB2B0; +} + +.nav > li.addtagsy > a { + padding-top: 10px !important; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + transition-duration: 0.2s; + -webkit-transition-duration: 0.2s; +} + +.nav>li>a:hover, .nav>li>a:focus { + text-decoration: none; + background-color: #424242; +} + + .panel-footer { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + padding: 0 0 8px 15px; + } + +th { + text-align: center; +} + +.table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td { + /* padding: 8px; */ + line-height: 1.42857143; + vertical-align: top; + /* border-top: 1px solid #282828; */ +} + +table { + border-collapse: inherit; + border-spacing: 10px; +} + +td, th { + padding: 0; + text-align: center; +} + +.table>tbody>tr.success>td, .table>tfoot>tr.success>td, .table>thead>tr.success>th, .table>tbody>tr.success>th, .table>tfoot>tr.success>th { + background-color: #0AA400; +} + +.version-info { + +} + +code { + padding: 0 0; + font-size: 90%; + color: #00fff5; + background-color: #393939; + border-radius: 0; + padding-left: 5px; + padding-right: 5px; + padding-bottom: 2px; + padding-top: 2px; +} + +.panel-primary { + border-color: #161618; +} + +.panel-default { + margin-bottom: 2px; + background-color: rgb(34, 34, 34); + border: 1px solid rgba(10, 10, 11, 0.46); + border-radius: 0px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel.panel-default { + border: 1px solid #383737; + } + + + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #565656; + border-color: #F800E3; + border-radius: 0px; +} + +.btn-default:hover { + color: #ffffff; + background-color: #2180ac; + border-color: #1f79a3; +} + +.btn-default { + color: #ffffff; + background-color: #1FB2B0; + border-color: #1FB2B0; +} + +.panel { + color: #888888; + border: 0; + background-color: rgba(34, 34, 34, 0.8); + border-radius: 0; +} + +.rulez { + color: #FFFFFF; +} + +.btn-default { + color: #ffffff; + background-color: #1FB2B0; + border-color: #1FB2B0; +} + +.anim { + + margin: 0; + animation: color 0.6s linear infinite !important; +} + @keyframes color { + 0% {color:red;} + 25% {color:yellow;} + 50% {color:#1FB2B0;} + 75% {color:#23dd06;} + 100% {color:red;} + } + + @-webkit-keyframes color { + 0% {color:red;} + 25% {color:yellow;} + 50% {color:#1FB2B0;} + 75% {color:#23dd06;} + 100% {color:red;} +} + +.btnlogin { + display: inline-block; + margin: 1px 1px -5px 1px; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 13px; + font-size: 12px; + line-height: 0.7; + border-radius: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/*@keyframes wiggle { + 0% { transform: rotate(-1deg); } + 50% { transform: rotate(1deg); } + 100% { transform: rotate(-1deg); } +} + +body { + animation-name: wiggle; + animation-duration: 0.3s; + animation-iteration-count: infinite; + overflow: hidden; + animation-timing-function: ease-in-out; +}*/ + + + +video:before { + box-shadow: 0 0 15px #000; +} + +.comment_image { + max-width: 300px; + max-height: 35%; +} + +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 10px; + padding-right: 15px; +} + +.navbar-default { + background-color: #1C1C1D; + border-color: #282828; +} + +.navbar-brand > img { + display: block; + height: 49px; + margin-top: -8px; +} + +.navbar-nav > li > a { + padding-top: 13px !important; + padding-bottom: 15px; +} + +.fucklaravel { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; + padding-bottom: 60px; +} + +@media (min-width: 768px) { + .fucklaravel { + width: 750px; + } + .fucklaravel + div > .fucklaravel { + width: 400px; + } + .fucklaravel + div > .flashcontainer > .fucklaravel { + width: 400px; + } +} +@media (min-width: 992px) { + .fucklaravel { + width: 970px; + } + .fucklaravel + div > .fucklaravel { + width: 620px; + } + .fucklaravel + div > .flashcontainer > .fucklaravel { + width: 620px; + } +} +@media (min-width: 1200px) { + .fucklaravel { + width: 1170px; + } + .fucklaravel + div > .fucklaravel { + width: 820px; + } + .fucklaravel + div > .flashcontainer > .fucklaravel { + width: 820px; + } +} +@media (min-width: 1550px) { + .fucklaravel { + width: 1550px !important; + } +} + +.suchleiste { + display: block; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #888888; + background: #1C1C1D none; + border: 1px solid #1fb2b0; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + float: right; + margin-top: -30px; +} + +.suchbutton { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + padding: 10px 15px; + font-size: 12px; + line-height: 0.7; + border-radius: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + float: right; + margin-top: -30px; + background: #1FB2B0 none; +} + +div.message > div.panel-heading > h3 { + font-size: 25px; + margin: 0; + display: inline; +} + +div.message > div.panel-heading { + display: flex; + justify-content: space-between; +} + +div.message > div.panel-heading > span { + color: #888; +} + +/* SPINNER */ +.spinner { + margin: 100px auto; + width: 40px; + height: 40px; + position: relative; +} + +.cube1, .cube2 { + background-color: #333; + width: 15px; + height: 15px; + position: absolute; + top: 0; + left: 0; + + -webkit-animation: sk-cubemove 1.8s infinite ease-in-out; + animation: sk-cubemove 1.8s infinite ease-in-out; +} + +.cube2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +@-webkit-keyframes sk-cubemove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5) + } + 50% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg) + } + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5) + } + 100% { + -webkit-transform: rotate(-360deg) + } +} + +@keyframes sk-cubemove { + 25% { + transform: translateX(42px) rotate(-90deg) scale(0.5); + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + } + 50% { + transform: translateX(42px) translateY(42px) rotate(-179deg); + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + } + 50.1% { + transform: translateX(42px) translateY(42px) rotate(-180deg); + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + } + 75% { + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } + 100% { + transform: rotate(-360deg); + -webkit-transform: rotate(-360deg); + } +} + +.mitte { + display: flex; + justify-content: center; + align-items: center; +} + +.rain { + -webkit-transform: rotate(35deg); + transform: rotate(35deg); +} + +img.icon[src="/images/icons/watermelon.png"] { + -webkit-transform: rotate(35deg); + transform: rotate(35deg); + margin-left: -3px; + margin-right: 1px; +} + +.rainsmall { + height:16px; + width: 16px; + -webkit-transform: rotate(35deg); + transform: rotate(35deg); + margin-left: -3px; + margin-right: 1px; +} + +.dank { + height: 32px; + width: 32px; + margin-bottom: 6px; +} + +.danksmall { + height: 20px; + width: 20px; + margin-bottom: 5px; +} + +/*.flinny { + height: 32px; + width: 32px; + margin-bottom: 6px; +}*/ + +.patoy { + height: 32px; + width: 32px; + margin-bottom: 6px; +} + +.patoyklein { + height: 16px; + width: 16px; + margin-bottom: 5px; +} + +.flinnysmall { + height: 16px; + width: 16px; + margin-bottom: 5px; +} + +.gay { + height: 32px; + width: 32px; + margin-bottom: 2px; +} + +.gaysmall { + height: 16px; + width: 16px; + margin-bottom: 2px; +} + +.duke { + height: 32px; + width: 32px; + margin-bottom: 2px; +} + +.dukesmall { + height: 16px; + width: 16px; + margin-bottom: 2px; +} + +ul.navbar-right > li > a > span.badge { + visibility: hidden; +} + +.readall { + margin-top: -20px; +} + +.onigiri { + margin-bottom: 2px; +} + +.bio { + height: 32px; + width: 32px; + margin-bottom: 4px; +} + +.biosmall { + height: 16px; + width: 16px; + margin-bottom: 4px; +} + +.jkh { + margin-left: 0px!important; +} + +.futter { + float: left; + text-align: left; + word-break: break-word; + word-wrap: break-word; + padding-left: 5px; + display: block; +} + +.futter > p { + margin: 0; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + background: rgba(10, 10, 10, 0.84); +} + +.logreg { + color: #ADADAD; + font-family: Oswald; + padding-top: 5px !important; + font-size: 16px; +} + +.eingabe { + display: block; + padding: 6px 12px!important; + background-color: #4a4a4a!important; + font-size: 14px; + line-height: 1.42857143; + color: #fffefe; + border: 1px solid; + border-color: #222323; +} + +input { + outline: 0!important; +} + +.trennelement { + height: 1px; + margin: -3px 0; + overflow: hidden; + background-color: rgba(255, 255, 255, 0.1); +} + +.dropdown-menu { + border: 6px solid #222222!important; + padding: 5px 0px!important; + margin: 6px -5px 0!important; + border-radius: 0px!important; +} + +.erinnerung { + display: inline-block; + margin-top: 4px; + margin-bottom: 0; + margin-left: 4px; + vertical-align: middle; +} + +.cheggbogs { + display: inline-block; + margin-top: 4px!important; + margin-bottom: 0; + vertical-align: middle; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 5px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #ffffff; + white-space: nowrap; +} + +.form-control { + outline: aqua!important; + background-color: #3c3a3a; +} + +.video-js { + position: initial; + background-color: transparent; + color: #1fb2b0; +} +/* +.video-js .vjs-play-progress { + background-color: #1fb2b0; +} + +.video-js .vjs-volume-level { + background-color: #1fb2b0; +} + + +.video-js .vjs-control-bar { + background: rgba(34, 34, 34, 0.61) +} + +.vjs-playback-rate .vjs-playback-rate-value { + top: -1px; + left: 1px; +} + +.video-js .vjs-time-control { + font-size: 1.5em; + line-height: 1.7em; + top: 1px; +} +*/ +.strong-colored strong { + color: #1FB2B0; +} + +/*.video-js .vjs-current-time, .video-js .vjs-time-divider, .video-js .vjs-duration { + display: block; +} + +.video-js .vjs-current-time { + padding-right: 0px; +} + +.video-js .vjs-duration { + padding-left: 0px; +} + +.video-js .vjs-control-bar { + display: none; +} +*/ +.americagay { + height: 32px; + width: 32px; + margin-bottom: 2px; + margin-left: 5px; +} + +.americagaysmall { + height: 16px; + width: 16px; + margin-bottom: 2px; +} + +select.form-control, input.form-control { + background-color: #353434; +} + +#dragndrop { + border: 2px dashed #353434; + border-radius: 0px; + justify-content: center; + text-align: center; + font-weight: bold; + font-size: 2rem; + padding: 0px; + background-color: #121214; + color: #888; + width: 100%; + min-height: 150px; +} + +#dragndrop-link { + width: 100%; + height: 100%; + color: inherit; + text-decoration: none; +} + +#dragndrop-link:hover { + text-decoration: none; +} + +#dragndrop-text { + display: flex; + align-items: center; + justify-content: center; + min-height: 150px; + flex-direction: column; +} + +#dragndrop-text > video { + width: 85%; + margin-top: 5px; +} + +.progress {background: rgb(26, 27, 26); border-radius: 0px; height: 20px; width: 85%;} +.progress-bar-custom {background: rgba(47, 196, 47, 1);} +.progress-striped .progress-bar-custom {background-color: rgba(47, 196, 47, 1); background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255, 255, 255, 0.15),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255, 255, 255, 0.15)),color-stop(0.75,rgba(255, 255, 255, 0.15)),color-stop(0.75,transparent),to(transparent))); background-image: -webkit-linear-gradient(45deg,rgba(255, 255, 255, 0.15) 25%,transparent 25%,transparent 50%,rgba(255, 255, 255, 0.15) 50%,rgba(255, 255, 255, 0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255, 255, 255, 0.15) 25%,transparent 25%,transparent 50%,rgba(255, 255, 255, 0.15) 50%,rgba(255, 255, 255, 0.15) 75%,transparent 75%,transparent); background-size: 36px 36px;} + +#dragndrop-clear { + color: red; +} + +#dragndrop-clear:hover { + text-decoration: none; +} + +.progress-striped { + margin-bottom: 0px; +} + +.upload-info { + font-size: 1.5rem; + font-weight: normal; + word-break: break-all; + white-space: normal; + padding-top: 8px; + padding-bottom: 5px; +} + +.row-upload { + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.row-upload > [class*="col-"] { + display: flex; + flex-direction: column; +} + +.reich { + font-family: 'UnifrakturCook', cursive; + color: #F2F5F4; + font-size: 18px; +} + +#dragndrop-text:hover { + color: #1fb2b0; +} + +.islam { + background-image: url(https://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/1235px-Flag_of_the_United_States.svg.png); + background-repeat: repeat-x; + background-size: contain; +} + +.911 { + text-shadow: 0 1px #808d93, -1px 0 #cdd2d5, -1px 2px #808d93, -2px 1px #cdd2d5, -2px 3px #808d93, -3px 2px #cdd2d5, -3px 4px #808d93, -4px 3px #cdd2d5, -4px 5px #808d93, -5px 4px #cdd2d5, -5px 6px #808d93, -6px 5px #cdd2d5, -6px 7px #808d93, -7px 6px #cdd2d5, -7px 8px #808d93, -8px 7px #cdd2d5; +} + +img.icon { + max-height: 1.1em; + max-width: 1.1em; + vertical-align: middle; + margin-bottom: 0.2em; +} + +.progress-bar-success { + background: #0AA400; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: #9b9999!important; +} + +::-webkit-scrollbar-track-piece { + background-color: #222222!important; + width: 10px; + max-height: 10px!important; +} + +::-webkit-scrollbar-thumb { + width: 15px; + background: #1fb2b0!important; +} + +#submittags { + font-size: 14px; + background-color: #363434; + color: white; + padding-bottom: 6px; +} + +button#submittags:hover { + background: #575757; +} + +.tags { + /*box-shadow: -13px 0px 10px 5px #000*/ +} + +/* Deutschland */ +.deutsch { + background-image: -webkit-linear-gradient(#000000 33%, #dd0000 33%, #dd0000 66%, #ffce00 66%); + background-image: -o-linear-gradient(#000000 33%, #dd0000 33%, #dd0000 66%, #ffce00 66%); + background-image: -moz-linear-gradient(#000000 33%, #dd0000 33%, #dd0000 66%, #ffce00 66%); + background-image: linear-gradient(#000000 33%, #dd0000 33%, #dd0000 66%, #ffce00 66%); + width: 100%; + + font-family: 'UnifrakturCook', cursive; + color: #F2F5F4; + text-align: center; + font-size: 1.3em; + text-shadow: rgb(3, 3, 3) 4px 4px 4px; +} + +.default-link { + color: #fff; +} + +.default-link:hover { + color: #fff; +} + +.default-link:focus { + color: #fff; +} + +.tag-panel-body { + color: #F2F5F4; + padding: 0px; +} + +.toggo { + background-color: rgba(34, 34, 34, 0); + border: 0px solid rgba(10, 10, 11, 0); + padding-bottom: 3px; + padding-top: 0px; +} + +.mCustomScrollBox { + position: relative; + overflow: hidden; + height: 100%; + max-width: 100%; + outline: 0; + direction: ltr; +} + +.label { + border-radius: 0; + font-size: 80%; + word-break: break-all; + display: inline-table; + white-space: inherit; + text-align: left; +} + +a.delete-tag.default-link { + color: #1fb2b0; + padding-left: 3px; +} + +.label-info { + background-color: #118280; +} + +.bootstrap-tagsinput { + color: #c8c8c8; + background: rgba(90, 88, 88, 0.4) none repeat scroll 0 0; + border: none; + border-radius: 0px; + white-space: nowrap; + overflow: hidden; + position: absolute; + width: 79%; + padding: 6px 3px; +} + +.bootstrap-tagsinput .tag { + margin-right: 2px; + color: white; + padding-top: 5px; + vertical-align: middle; +} + +.btn-primary:hover { + color: #ffffff; + background-color: #383737; + border-color: #1fb2b0; +} + +.modal-body > .bootstrap-tagsinput, .col-sm-10 > .bootstrap-tagsinput { + position: relative; + width: 100%; +} + +.col-sm-10 > .bootstrap-tagsinput { + background-color: #353434; + border: 1px solid #282828; +} + +/* SCROLL FOO */ +#sidebar { + width: 350px; + float: left; + display: flex; + flex-direction: column; + margin-bottom: 0; + height: calc(100% - 50px); + height: calc(100vh - 50px); +} + +#sidebar > #motd { + border: 4px solid #1fb2b0; + margin-bottom: 1px; + text-align: center; + background-color: rgb(34, 34, 34); + border-radius: 0px; +} + +#sidebar > .comments { + flex-grow: 1; + overflow-y: scroll; +} + +#sidebar > .comments, #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 350px; +} + +/* Damit das Logo nicht mehr auf Handys gefickt ist */ + +@media(max-width:35em) { + .navbar-brand > img {margin-left: 5px; height: 49px; margin-top: 0px;} +} + +@media(max-width:40em) { + .navbar-brand > img {margin-left: 5px; height: 49px; margin-top: 0px;} +} + +@media(max-width:45em) { + .navbar-brand > img {margin-left: 5px; height: 49px; margin-top: 0px;} +} + +@media(max-width:48em) { + .navbar-brand > img {margin-left: 5px; height: 49px; margin-top: 0px;} +} + +/* Fixing Tag height and stuff */ +div#tag-display { + overflow: auto; + max-height: 4em; + padding: 2px 2px; + padding-bottom: 2px; + border-top: 1px solid #1fb2b0; + width: 350px; +} + +.tagtest { + padding: 0px 2px; + display: block; + height: auto; +} + +/* Hiding Tag Scrollbar in Webkit Browsers */ +div#tag-display::-webkit-scrollbar { + display: none; +} + +/* Tag Toggle Test! + #tagcontent {display: none; } + .tagadd:active + .hidetaginput + #tagcontent {display: inline;} + .tagadd:focus + .hidetaginput + #tagcontent {display: inline;} + .tagadd:valid + .hidetaginput + #tagcontent {display: inline;} + + */ + +label[for='tag-add-toggle'] { + color: #1FB2B0; + padding-top: 10px; + font-weight: normal; + padding-bottom: 5px; + margin-bottom: 0px; + font-family: Oswald; + cursor: pointer; + padding-right: 5px; + padding-left: 5px; + transition-duration: 0.2s; + -webkit-transition-duration: 0.2s; +} + +label[for='tag-add-toggle']:hover { + color: #00fbff; + text-decoration: none; + } + +#tag-add-toggle { + display: none; + } + +#tag-add-toggle + #tag-add { + display: none; + } + +#tag-add-toggle:checked + #tag-add { + display: block; + } + + .donationlist { + max-height: 230px; + overflow: auto; + padding-bottom: 0px; + padding-right: 0px; + padding-left: 0px; + } + + .table { + margin-bottom: 0; + } + +.btn-primary { + color: #ffffff; + background-color: #222222; + border-color: #1FB2B0; +} + +.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { + outline: thin dotted; + outline: 0px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #222222; + border-color: #1fb2b0; +} + +.btn-primary:active:hover, .btn-primary.active:hover, .open > .dropdown-toggle.btn-primary:hover, .btn-primary:active:focus, .btn-primary.active:focus, .open > .dropdown-toggle.btn-primary:focus, .btn-primary:active.focus, .btn-primary.active.focus, .open > .dropdown-toggle.btn-primary.focus { + color: #ffffff; + background-color: #383737; + border-color: #1fb2b0; +} + +.btn-primary:focus, .btn-primary.focus { + color: #ffffff; + background-color: #383737; + border-color: #1fb2b0; +} + +span.addtagsy { + font-family: Oswald; + letter-spacing: 0.4px; + cursor: pointer; + padding: 5px 5px; +} + +span.addtagsy>a { + color: #ADADAD; + } + +span.addtagsy>a:hover { + color: #00fbff; + text-decoration: none; + background: #575757; + padding: 6px 6px; + margin-left: -6px; + margin-right: -6px; +} + +.tagpanelinfos { + padding: 5px; + padding-left: 0px; + padding-bottom: 5px; +} + +div#tag-add { + margin-bottom: 5px; +} + +.tagtest.tagpanelinfos { + border-right: 2px solid #1fb2b0; + width: 100%; + border-bottom: 2px solid #1fb2b0; + height: 34px; + display: flex; + align-items: baseline; + justify-content: space-around; +} + +/* Experimental Mobile Shit xD */ +@media (max-width: 767px) { + #sidebar > #motd { + border: 3px solid #1fb2b0; + margin-bottom: 1px; + text-align: center; + background-color: rgb(34, 34, 34); + position: static; + width: 100%; + display: none !important; + } +} +@media (max-width: 767px) { + #sidebar { + width: 100%; + float: left; + display: flex; + flex-direction: column; + margin-bottom: 0; + height: auto !important; + position: absolute; + /*top: 545px;*/ + + bottom: 0; + z-index: 2; + } +} +@media (max-width: 763px) { + #sidebar { + width: 100%; + float: left; + display: flex; + flex-direction: column; + margin-bottom: 0; + height: auto !important; + position: absolute; + top: 38em; + bottom: 0; + z-index: 2; + } +} +@media (max-width: 767px) { + aside.tags.hidden-xs.mCustomScrollbar._mCS_2.mCS-autoHide.mCS_no_scrollbar { + width: 100%; + } +} +@media (max-width: 767px) { + #sidebar > .comments { + flex-grow: 1; + overflow-y: visible; + padding-bottom: 95px; + width: 100%; + border-bottom: 2px solid transparent; + } +} +@media (max-width: 767px) { + .vertical-align { + min-height: calc(100% - 50px); + min-height: calc(100vh - 50px); + display: flex; + align-items: baseline; + } +} +@media (max-width: 690px) { + .vertical-align { + min-height: calc(100% - 50px); + min-height: calc(50vh - 50px); + display: flex; + align-items: baseline; + padding-top: 10px; + padding-bottom: 10px; + } +} +@media (max-width: 657px) { + #sidebar { + width: 100%; + float: left; + display: flex; + flex-direction: column; + margin-bottom: 0; + height: auto !important; + position: absolute; + top: 35em; + z-index: 2; + } +} +@media (max-width: 767px) { + #sidebar, #motd, #commentForm, .tags, .comments { + display: block !important; + background: #1c1c1d; + } +} +@media (max-width: 360px) { + #sidebar { + width: 100%; + float: left; + display: flex; + flex-direction: column; + margin-bottom: 0; + height: auto !important; + position: absolute; + top: 23em; + z-index: 2; + } +} +@media (max-width: 360px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} + +/* Sidebar Mobile */ + +@media (max-width: 767px) { + #sidebar { + top: 40em; + } +} +@media (max-width: 694px) { + #sidebar { + top: 36em; + } +} +@media (max-width: 610px) { + #sidebar { + top: 33em; + } +} +@media (max-width: 549px) { + #sidebar { + top: 31em; + } +} +@media (max-width: 548px) { + #sidebar { + top: 31em; + } +} +@media (max-width: 511px) { + #sidebar { + top: 29em; + } +} +@media (max-width: 509px) { + #sidebar { + top: 29em; + } +} +@media (max-width: 448px) { + #sidebar { + top: 27em; + } +} +@media (max-width: 420px) { + #sidebar { + top: 26.67em; + } +} +@media (max-width: 400px) { + #sidebar { + top: 26em; + } +} +@media (max-width: 390px) { + #sidebar { + top: 26em; + } +} +@media (max-width: 367px) { + #sidebar { + /*top: 24.6em;*/ + top: 27em; + } +} +@media (max-width: 360px) { + #sidebar { + top: 26.6em; + } +} +/* Sidebar Mobile Queries END */ +/* TAGS MOBILE FIXED */ + +@media (max-width: 767px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 694px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 610px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 549px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 548px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 511px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 509px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 448px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 420px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 400px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 390px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 367px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +@media (max-width: 360px) { + #sidebar > .tags { + border-bottom: 1px solid #1fb2b0; + width: 100%; + bottom: 0; + position: fixed !important; + background: rgb(22, 22, 24); + border-top: 1px solid #1fb2b0; + border-left: 0px solid #1fb2b0; + } +} +/* END OF MOBILE TAG MEDIA QUERIES */ +/* border-top for commentForm (only for mobile devices */ +/* Für extreme Bullenscheiße und obsolet empfunden */ +/* @media (max-width: 767px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 694px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 610px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 549px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 548px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 511px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 509px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 448px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 420px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 400px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 390px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} +@media (max-width: 367px) { + #sidebar { + top: 23em; + } +} +@media (max-width: 360px) { + div#commentForm { + border-top: 2px solid #1fb275; + } +} + +*/ + +/* Mobile Tag Box width */ +@media (max-width: 767px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 694px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 610px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 549px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 548px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 511px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 509px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 448px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 420px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 400px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 390px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 367px) { + div#tag-display { + width: 100%; + } +} +@media (max-width: 360px) { + div#tag-display { + width: 100%; + } +} + +/* END OF MOBILE TAG WIDTH */ + +/* Alerts */ +.alert { + border-radius: 5px; + margin-bottom: 0px; +} + +.alert-danger { + background-color: #cc000099; + border-color: #ff002ac7; + color: #ffffff; + box-shadow: 0px 0px 9px #d41212; + text-align: center; + font-weight: bold; + font-family: vcr; + text-transform: uppercase; +} + +.alert-success { + background-color: #008804; + border-color: #13ff25; + box-shadow: 0px 0px 5px #18e000; + text-align: center; + font-weight: bold; + font-family: vcr; + text-transform: uppercase; +} + +.flashcontainer { + position: unset; + top: 20px; + opacity: 0.8; + z-index: 5; + width: 100%; +} + +.register { + width: 100%; + display: flex; + justify-content: center +} + +.ulbutton { + position: relative; + min-height: 1px; + padding-left: 0; + padding-right: 15px; + float: left; +} + +.ulcontainer { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} + +.uploadheader { + padding-bottom: 0px; + margin: 20px 0 20px; + text-align: center; +} + +h3#upheader { + font-family: monospace; + font-weight: bold; + color: #1fb2b0; + text-shadow: 1px 1px 20px #1fb2b0; +} + +.guidelinez { + background: #353434; + padding: 5px; + white-space: normal; +} + +p#hguide { + font-weight: bold; + color: #fdf8f8; +} + +.guidelinez > p { + color: #ffffff; +} + +span#big { + font-weight: bold; + color: white; +} + +ul#ulguide { + color: #fdf8f8; +} + +input#nsfw { + vertical-align: top; + margin: 4px 0 0; + cursor: pointer; +} + +.blah { + background: #353434; + padding: 6px 12px; + border: 1px solid #282828; +} + +label#nsfw { + margin-bottom: 0px; + cursor: pointer; + color: #ff0000; + vertical-align: bottom; +} + +div#guidelines { + display: flex; + justify-content: center; + width: 100%; +} + +@media (min-width: 1550px) { +.ulcontainer { + width: 768px !important; +} +} + +@media (min-width: 1200px) { +.ulcontainer { + width: 1170px !important; +} +} + +@media (min-width: 992px) { +.ulcontainer { + width: 970px !important; +} +} + +@media (min-width: 768px) { +.ulcontainer { + width: 750px !important; +} +} + +.ultags > .bootstrap-tagsinput { + position: unset; + width: 100%; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + background-color: #000000; +} + +.modal-body { + position: relative; + min-height: 80px; + display: flex; + justify-content: center; +} + +input.form-control.usernamelogin { + width: 300px; +} + +input.form-control.passwordlogin { + width: 300px; +} + +.navbar-form { + border-top: 0px solid transparent; + border-bottom: 0px solid transparent; + -webkit-box-shadow: 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 rgba(0, 0, 0, 0); +} + +p#logincenter { + text-align: center; +} + +@media (max-width: 768px) { + .navbar-inverse { + background-color: rgb(22, 22, 24); + border-bottom: 1px solid #2099ae; + } +} + +@media (max-width: 768px) { + .flashcontainer { + top: 5px; + } +} + +input#rememberme { + vertical-align: sub; +} + +span#rember { + vertical-align: middle; + color: white; +} + +ul.vorteilul { + background: #000000; + color: #ff00fc; + border: 1px solid; + text-shadow: 0px 0px 10px #fa008b; + font-family: 'Orbitron', sans-serif; + box-shadow: 0px 0px 15px 0px #7900ff; + list-style: korean-hangul-formal; + text-align: left; + padding-top: 10px; + padding-bottom: 10px; +} + +ul.nav.navbar-nav { + display: flex; + justify-content: center; +} + +.panel-danger { + border: 1px solid red !important; +} + +p.vorteile { + font-weight: bold; +} + +.modal-body.frontendeditmodal { + display: block !important; +} + +.caption small { + background: #3f4442; + color: white; + padding: 5px; + float: right; + font-size: 0.777em !important; + line-height: 0.96; +} + +.caption h3 { + font-size: 28px; + color: white; + font-weight: bold; + margin-top: 10px; +} + +.thumbnail { + border-radius: 0; +} + +.popover { + border-radius: 0; +} + +/* Neue Pagination */ +.pagination > li:first-child > a, .pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { + z-index: 2; + color: #161618; + background-color: #1fb2b0; + border-color: transparent; + cursor: default; +} + +.pagination > li:last-child > a, .pagination > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { + color: #d4d4d5; + background-color: rgba(31, 178, 176, 0.47); + border-color: rgb(31, 178, 176); +} + +ul.pagination { + display: flex; + justify-content: center; +} +/* Ende der neuen Pagination */ + +/* Psychedelic w0bm Logo */ + +/*.navbar-brand { + animation: colorRotate 3s linear infinite; +} + +@keyframes colorRotate { + 100% { + -webkit-filter: hue-rotate(360deg); + } +} + +body { + animation: colorRotate 3s linear infinite; +}*/ + +/* Alucard's persnal friendbox */ +.alusexy { + border: 1px solid #888888; + padding: 10px; + background: #0c0c0c; + font-weight: bold; +} + +/* "ADS" */ +/*.panel-body.motd::after { + content: "Non-Profit Advertisement"; + bottom: 0; + position: relative; + top: 27px; + left: -115px; + right: 0; + font-size: 9px; + color: black; + font-weight: bold; + background: white; + padding-right: 5px; + padding-left: 5px; + display: inline-block; +}*/ + +input[type="checkbox"] { + vertical-align: top; +} + +.profilheader { + display: flex; + justify-content: space-between; + font-size: 2rem; + color: white; + padding-bottom: 10px; + background: #2c2c2c; + padding-top: 10px; + padding-left: 10px; + border-top-left-radius: 10px; + border-top-right-radius: 10px; +} + +hr { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-top: 2px solid #1fb2b0; +} + +blockquote { + padding: 10px 10px; + margin: 0 0 10px; + border-left: 5px solid #282828; + color: #80FF00; + word-wrap: break-word; +} + +div.notfound { + display: flex; + flex-flow: row wrap; + justify-content: center; + padding-left: 15px; + padding-right: 15px; + text-align: center; +} + +img#notfound-img { + max-width: 100%; +} + +div.notfound { + display: flex; + flex-flow: row wrap; + justify-content: center; + padding-left: 15px; + padding-right: 15px; + text-align: center; + padding-bottom: 15px; + padding-top: 15px; +} + +@media (max-width: 768px) { +img#notfound-img { + max-width: 100%; + height: 220px; +} +} + +/* Modal Erneuerung [TEST] */ +@media (min-width: 768px) { + .modal-dialog { + width: 500px; + margin: 30px auto; + } +} + +.modal-content { + border-radius: 0; +} + +form.navbar-form.navbar-right { + margin-right: 0; +} + +input.form-control { + margin-bottom: 5px; +} + +/* Handy fix */ +@media (max-width: 690px) { + .text-center { + font-size: 19px; + display: flex; + justify-content: space-between; + } +} + +@media (max-width: 767px) { + #sidebar > .comments { + padding-bottom: 80px; + } +} + +@media (max-width: 767px) { + aside#sidebar::before { + content: "Comments"; + width: 100%; + display: flex; + justify-content: center; + background: #212121; + border-top: 1px solid #1fb2b0; + border-bottom: 1px solid #1fb2b0; + margin-bottom: 5px; + color: #eaedec; + } +} + + +@media (max-width: 690px) { + ul.pagination { + flex-flow: row wrap; + } +} + +.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { + background-color: #1fb2b0; + border-color: #3c3c3c; +} + +.list-group-item-info { + background-color: #ff009a; +} + +.badge { + background-color: #1fb2b0; +} + +.panel-heading { + border-top-right-radius: 0px; + border-top-left-radius: 0px; +} + +span#jointime { + float: right; + font-size: 1.4em; + color: white; +} + +.profile-info { + display: flex; + justify-content: flex-start; + font-size: 1.4em; +} + +span#count-upload, span#comments-user, span#favs-user { + margin-right: 5px; +} + +span#comments-user > a { + color: white; +} + +span#favs-user > a { + color: #ff0094; +} + +@media (max-width: 690px) { + span#jointime, .profile-info { + font-size: unset; + text-align: center; + } + +} + +@media (max-width: 690px) { + a.last { + position: absolute; + top: 0; + right: 0; + background: #212121; + padding-left: 5px; + border-bottom-left-radius: 5px; + border-bottom: 1px solid #1fb2b0; + border-left: 1px solid #1fb2b0; + } +} + +@media (max-width: 690px) { + a.first { + position: absolute; + top: 0; + left: 0; + background: #212121; + padding-right: 5px; + border-bottom-right-radius: 5px; + border-bottom: 1px solid #1fb2b0; + border-right: 1px solid #1fb2b0; + } +} + +@media (max-width: 690px) { + .fucklaravel { + padding-left: 0; + padding-right: 0; + margin: 5px; + } +} + +@media (max-width: 690px) { + iframe[src="https://observation.stasi.club/index.php?module=CoreAdminHome&action=optOut&language=en"] { + width: 100% !important; + height: 250px !important; + } +} + +@media (max-width: 690px) { + table { + border-spacing: 5px; + } +} + +@media (max-width: 767px) { + #sidebar > .comments { + padding-bottom: calc(4em + 45px); + } +} + +@media (max-width: 690px) { +div#pagination { + padding: 0; +} +} + +h3#index { + font-size: 2em; + margin-bottom: 0; +} + +@media (max-width: 690px) { + .navbar-toggle { + margin-right: 5px; + } +} + +@media (max-width: 690px) { + td { + max-width: 40px; + word-break: break-word; + } +} + +/* FIRE THE FUCKING LAZ0R MOTHERFUCKER! */ +#btn-upload:hover { + background-image: url(/shoop.png); + background-size: contain; + background-repeat: no-repeat; + +} + +#btn-upload:hover > span#laz0r-fire { + background: aqua; + position: absolute; + height: 15px; + z-index: 0; + left: 24px; + box-shadow: -1px 0px 3px 1px white; + top: 15.44px; + -webkit-animation-name: shoop; + -webkit-animation-duration: 0.1s; + -webkit-animation-iteration-count: infinite; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + width: calc(100% - 40px); + font-family: vcr; +} + +#btn-upload:hover > span.laz0r { + z-index: 1; + font-size: 39px; + position: relative; + font-weight: bold; + text-transform: uppercase; + text-shadow: 0px 0px 5px #00ffff; + top: 0px; + font-family: vcr; + color: #151013; +} + +@-webkit-keyframes shoop { + 0% { top: 16px } + 2% { top: 17px } + 3% { top: 20px } + 10% { top: 17px } + 100% { top: 16px } +} + +.kk { + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; +} + +.bannedomg { + text-align: center; + color: white; + font-weight: bold; + font-size: 2vh; + font-family: monospace; +} + +video.banvideo { + margin: 0 auto; + display: flex; +} + +h1#b4nned { + text-align:center; +} + +@media (max-width: 690px) { + .banwidth { + width: 100%; + } +} + +.banned { + font-weight: bold; +} + +.box { + background: #232222; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + padding-left: 10px; + overflow: auto; +} + +.about-tags { +color: #c8c8c8; +background: rgba(90, 88, 88, 0.4) none repeat scroll 0 0; +border: none; +border-radius: 0px; +padding: 6px 3px; +} + +.friends { + text-align: center; + font-weight: bold; + color: aliceblue; + font-family: vcr; + text-transform: uppercase; + font-size: 16px; + background: black; + border-top: 1px solid #1fb2b0; +} + +.friendz > a { + color: #ff00fc; +} + + + +.rainbow { + animation: rainbold 1s linear infinite; + color: red; + font-size: 1.5em; + letter-spacing: 0.33em; + /*margin-left: 7px;*/ + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; +} +@keyframes rainbold { + 0% { + color: red; + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; + } + 14% { + color: orange; + text-shadow: -1px 0px yellow, -2px 0px green, -3px 0px blue, -4px 0px indigo, -5px 0px violet, -6px 0px red; + } + 28% { + color: yellow; + text-shadow: -1px 0px green, -2px 0px blue, -3px 0px indigo, -4px 0px violet, -5px 0px red, -6px 0px orange; + } + 43% { + color: green; + text-shadow: -1px 0px blue, -2px 0px indigo, -3px 0px violet, -4px 0px red, -5px 0px orange, -6px 0px yellow; + } + 57% { + color: blue; + text-shadow: -1px 0px indigo, -2px 0px violet, -3px 0px red, -4px 0px orange, -5px 0px yellow, -6px 0px green; + } + 71% { + color: indigo; + text-shadow: -1px 0px violet, -2px 0px red, -3px 0px orange, -4px 0px yellow, -5px 0px green, -6px 0px blue; + } + 85% { + color: violet; + text-shadow: -1px 0px red, -2px 0px orange, -3px 0px yellow, -4px 0px green, -5px 0px blue, -6px 0px indigo; + } + 100% { + color: red; + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; + } +} +@-moz-keyframes rainbold { + 0% { + color: red; + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; + } + 14% { + color: orange; + text-shadow: -1px 0px yellow, -2px 0px green, -3px 0px blue, -4px 0px indigo, -5px 0px violet, -6px 0px red; + } + 28% { + color: yellow; + text-shadow: -1px 0px green, -2px 0px blue, -3px 0px indigo, -4px 0px violet, -5px 0px red, -6px 0px orange; + } + 43% { + color: green; + text-shadow: -1px 0px blue, -2px 0px indigo, -3px 0px violet, -4px 0px red, -5px 0px orange, -6px 0px yellow; + } + 57% { + color: blue; + text-shadow: -1px 0px indigo, -2px 0px violet, -3px 0px red, -4px 0px orange, -5px 0px yellow, -6px 0px green; + } + 71% { + color: indigo; + text-shadow: -1px 0px violet, -2px 0px red, -3px 0px orange, -4px 0px yellow, -5px 0px green, -6px 0px blue; + } + 85% { + color: violet; + text-shadow: -1px 0px red, -2px 0px orange, -3px 0px yellow, -4px 0px green, -5px 0px blue, -6px 0px indigo; + } + 100% { + color: red; + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; + } +} +@-webkit-keyframes rainbold { + 0% { + color: red; + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; + } + 14% { + color: orange; + text-shadow: -1px 0px yellow, -2px 0px green, -3px 0px blue, -4px 0px indigo, -5px 0px violet, -6px 0px red; + } + 28% { + color: yellow; + text-shadow: -1px 0px green, -2px 0px blue, -3px 0px indigo, -4px 0px violet, -5px 0px red, -6px 0px orange; + } + 43% { + color: green; + text-shadow: -1px 0px blue, -2px 0px indigo, -3px 0px violet, -4px 0px red, -5px 0px orange, -6px 0px yellow; + } + 57% { + color: blue; + text-shadow: -1px 0px indigo, -2px 0px violet, -3px 0px red, -4px 0px orange, -5px 0px yellow, -6px 0px green; + } + 71% { + color: indigo; + text-shadow: -1px 0px violet, -2px 0px red, -3px 0px orange, -4px 0px yellow, -5px 0px green, -6px 0px blue; + } + 85% { + color: violet; + text-shadow: -1px 0px red, -2px 0px orange, -3px 0px yellow, -4px 0px green, -5px 0px blue, -6px 0px indigo; + } + 100% { + color: red; + text-shadow: -1px 0px orange, -2px 0px yellow, -3px 0px green, -4px 0px blue, -5px 0px indigo, -6px 0px violet; + } +} + +.dropbtn { + padding: 16px; + font-size: 16px; + border: none; +} + +.dropdown { + position: relative; + display: inline-block; +} + +.dropdown-content { + + display: none; + position: absolute; + min-width: 140px; + box-shadow: none; + z-index: 1; + +} + +.dropdown-content a { + color: white; + text-decoration: none; + display: block; + background: #383737; + text-align: left; + padding: 5px; + font-size: 14px; +} + +.dropdown-content a:hover { + background-color: #3f3f3f; +} + +.dropdown:hover .dropdown-content {display: block;} + +.dropdown:hover .dropbtn {background-color: #3e8e41;} + +#dlbutton { + cursor: pointer; + text-decoration: none; + color: #1fb2b0; +} + +.popover-content { + /*padding-bottom: 0px;*/ +} + +div.downloadvid { + width: max-content; + width: -webkit-max-content; + width: -moz-max-content; +} + +ul.downloadlist { + list-style: none; + padding: 0; +} + +.filesize { + float: right; + padding-left: 5px; +} + +#careful { + text-shadow: 1px 0px 5px red; +} + +nsfw { + color: #d83b3bcc; + background: #0a090c; + border-radius: 5px; + padding: 2px; +} + +nsfw::after { + content: "NSFW"; +} + +.copylink { + border-radius: 5px; + border: 0; + color: white; + padding-right: 5px; + padding-left: 5px; +} + +button.copylink { + background: transparent; + color: inherit; +} + +button.copylink:active { + background: #142121; + outline: 0; + transition: all 2s ease-in-out; +} + +button.copylink:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button.copylink:hover { + background: #142121; + transition: all 2s ease; +} + +button.copylink:focus:after { + content: "✔"; + position: relative; + color: lime; + left: 3px; + top: -2px; + transition: all .5s ease; + font-size: 14px; +} + +button.copylink:not(:focus) { + transition: all .5s ease-out; +} + +@keyframes success { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes success-mobile { + from { top: 0; z-index: -1; } + to { top: -13; } +} + +@media (max-width: 767px) { + button.copylink:focus:after { + left: 3px; + font-size: 10px; + top: -4px; + transition: all .5s ease; + animation-name: success-mobile; + animation-duration: .5s; + } +} + +.spoiler { + background: black; + color: black; + font-family: monospace; + padding-left: 2px; + padding-right: 2px; +} + +.spoiler:hover { + color: white; + transition: all .2s ease-in-out; +} + +a:hover, a:focus { + color: #1fb2b0; + text-decoration: underline; +} + +button#togglebg { + background: transparent; + border: 0; + border-radius: 5px; + padding-right: 5px; + padding-left: 5px; +} + +button#togglebg:active { + background: #353512; + outline: 0; + transition: all 2s ease-in-out; +} + +button#togglebg:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button#togglebg:hover { + background: #142121; + transition: all 2s ease; +} + +button#togglebg:not(:focus) { + transition: all .5s ease-out; +} + +button#toggle { + background: transparent; + border: 0; + border-radius: 5px; + padding-right: 5px; + padding-left: 5px; +} + +button#toggle:active { + background: #353512; + outline: 0; + transition: all 2s ease-in-out; +} + +button#toggle:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button#toggle:hover { + background: #142121; + transition: all 2s ease; +} + +button#toggle:not(:focus) { + transition: all .5s ease-out; +} + +span.videoinfo { + background: #21292f; + border-radius: 5px; + padding: 5px; +} + +button#dlbutton { + background: transparent; + border: 0; + border-radius: 5px; + padding: 5px; +} + +button#dlbutton:active { + background: #142121; + outline: 0; + transition: all 2s ease-in-out; +} + +button#dlbutton:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button#dlbutton:hover { + background: #142121; + transition: all 2s ease; +} + +button#dlbutton:not(:focus) { + transition: all .5s ease-out; +} + +button#webm_report { + background: transparent; + border: 0; + border-radius: 5px; + padding-right: 5px; + padding-left: 5px; +} + +button#webm_report:active { + background: #353512; + outline: 0; + transition: all 2s ease-in-out; +} + +button#webm_report:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button#webm_report:hover { + background: #142121; + transition: all .5s ease; +} + +button#webm_report:not(:focus) { + transition: all .5s ease-out; +} + +/* FAV */ + +button#favbutton { + background: transparent; + border: 0; + border-radius: 5px; +} + +button#favbutton:active { + background: #142121; + outline: 0; + transition: all 2s ease-in-out; +} + +button#favbutton:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button#favbutton:hover { + background: #142121; + transition: all 2s ease; +} + +button#favbutton:not(:focus) { + transition: all .5s ease-out; +} + +/* Infobutton */ +button#infobox { + background: transparent; + border: 0; + border-radius: 5px; + padding: 5px; +} + +button#infobox:active { + background: #142121; + outline: 0; + transition: all 2s ease-in-out; +} + +button#infobox:focus { + outline: 0; + background: #142121; + transition: all .4s ease; +} + +button#infobox:hover { + background: #142121; + transition: all 2s ease; +} + +button#infobox:not(:focus) { + transition: all .5s ease-out; +} + +.favbutton { + position: relative; + display: inline-block; +} + +.vidinfo { + text-align: center; + color: rgb(31, 178, 176); + position: relative; + top: 10px; + font-family: "Oswald",sans-serif; + font-size: 16px; +} + +/* onclick css menu */ +.onclick-menu { + position: relative; + display: inline-block; +} +.onclick-menu:before { + content: "?"; +} +.onclick-menu:focus { + pointer-events: none; +} + +.onclick-menu:focus .onclick-menu-content { + opacity: 1; + visibility: visible; +} + +.onclick-menu-content { + pointer-events: auto; + position: absolute; + z-index: 1; + width: 40em; + opacity: 0; + visibility: hidden; + transition: visibility 0.5s; + -moz-transition: visibility 0.5s; + -webkit-transition: visibility 0.5s; + -o-transition: visibility 0.5s; +} + +.onclick-menu.no-pointer-events { + pointer-events: auto !important; +} + +.onclick-menu.no-visibility .onclick-menu-content { + visibility: visible !important; + display: none; +} + +.onclick-menu.no-visibility:focus .onclick-menu-content { + display: block; +} + +.onclick-menu.no-opacity .onclick-menu-content { + opacity: 1 !important; +} + +/* +Eye candy +( colors courtesy of https://kuler.adobe.com/try-color-theme-3350110 ) +*/ +.onclick-menu { + padding: 0; + margin: 0 0 0 0; + outline: 0; +} +.onclick-menu:before { + padding: 5px 10px; + color: #1fb2b0; + font-weight: bold; + cursor: pointer; +} +.onclick-menu-content { + background-color: #21292f; + margin-top: 10px; + margin-left: -6px; + padding: 10px; +} + +/* arrow for the expanding part */ +.onclick-menu-content:before { + content: ""; + width: 0; + height: 0; + + border-bottom: 10px solid #b1b1b1; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + + position: absolute; + top: -10px; +} + +.onclick-menu-content li { + color: #f2f5e9; + list-style-type: none; + white-space: pre-line; +} + +/* style the buttons */ +.onclick-menu-content button { + background: transparent; + border: none; + color: inherit; + cursor: inherit; + outline: 0; + cursor: pointer; +} +.onclick-menu-content button:hover { + color: #ff8c31; +} + +@media (max-width: 767px) { + .onclick-menu { + display: none; + } +} + +@media (max-width: 767px) { + .vidinfo { + background: #21292f; + border-radius: 5px; + } + + span.videoinfo { + background: transparent; + } + + time.timeago { + display: inline-block; + } +} + +a.delete_video, a.edit_video { + font-size: 13px; + color: #ffff; +} + +a.delete_comment, a.edit_comment { + font-size: 12px; + color: white; + float: right; + padding-right: 5px; +} + +a.saveCommentEdit, a.abortCommentEdit { + font-size: 12px; + color: white; + float: right; + padding-right: 5px; +} + +amount { + color: #1fb2b0; +} + +p { + word-wrap: break-word; +} + +.reg_wrapper { + padding: 10px; + background: #1a1a1b; + margin: 5px; + border-radius: 5px; +} + +.advantages { + padding: 10px; + background: #21292f; + margin: 5px; + border-radius: 5px; + color: aliceblue; +} + +#registermodal, #loginmodal { + padding-left: 0px !important; +} + +.login_wrapper { + padding: 10px; + background: #1a1a1b; + margin: 5px; + border-radius: 5px; + display: flex; + justify-content: center; +} + +@media (max-width: 767px) { + #btn-upload:hover > span.laz0r { + font-size: 26px; + } +} + +@media (max-width: 991px) { + .aside + div > .container { + width: 100%; + } +} + +a.file_size { + color: white; +} + +.comment_emoji { + max-width: 80px; + max-height: 80px; + vertical-align: text-bottom; +} + +.comment_emoji_small { + height: 50px; + width: auto; + margin-right: 5px; + background: #6c6c7b; + border-radius: 5px; + vertical-align: super; + margin-bottom: 5px; +} + +.emojis { + margin-left: 5px; + margin-right: 5px; + white-space: nowrap; +} + +#parent { + background: #21292f; + border-radius: 5px; + border: 1px solid #1fb2b0; + padding: 5px; + cursor: pointer; +} + +.emoji-shit, .header { + display: inline; + cursor: pointer; +} + +.simplebar-scrollbar:before { + position: absolute; + content: ""; + background: #73859f; + border-radius: 0; + left: 0; + right: 0; + opacity: 0; + transition: opacity 0.2s linear; +} + +.simplebar-track .simplebar-scrollbar.visible:before { + opacity: 0.8; + transition: opacity 0 linear; +} + +.simplebar-track.horizontal .simplebar-scrollbar:before { + height: 100%; + left: 0; + right: 0; +} + +.horizontal.simplebar-track .simplebar-scrollbar { + right: auto; + left: auto; + top: auto; + height: 14px; + min-height: 0; + min-width: 10px; + width: auto; +} + +.whatanime { + background: rgb(33, 41, 47); + color: white; + text-align: center; + border-radius: 5px; +} + +.anime-thumb-opener { + position: absolute; + top: 5px; + right: 5px; + cursor: pointer; + z-index: 1; + background: #21292f; + border-radius: 98px; + padding-left: 5px; + padding-right: 5px; + padding-top: 2px; + padding-bottom: 2px; + border: 2px solid #1fb2b0; + color: white; +} + +.anime-thumb { + position: absolute; + border: 2px solid black; + background: #21292f; + text-align: left; + font-family: monospace; + font-size: 13px; + width: 324px; + top: 10px; + right: 10px; + padding: 10px; +} + +img#thumbnail_img { + max-width: 300px; + border: 1px solid white; + margin-bottom: 5px; +} + +a[href="https://w0bm.com/user/thebigben"], a.thebigben, h3.thebigben { + font-family: unifrakturcook,cursive; +} + +.no-js { + position: absolute; + font-size: 10px; + right: calc(100vh - 30%); + font-style: italic; + font-family: monospace; + border: 1px dotted red; + background: white; + color: black; + top: 5px; + padding: 5px; +} + +.no-js-profile { + position: absolute; + font-size: 10px; + font-style: italic; + font-family: monospace; + border: 1px dotted red; + background: white; + color: black; + top: 5px; + padding: 5px; +} + +.Ralfjack::before { + background-image: url('/images/icons/ralfjack/muscle-left.png'); + background-size: 15.4px 15.4px; + display: inline-block; + width: 15.4px; + height: 15.4px; + content: ""; + vertical-align: middle; + margin-right: 5px; + margin-left: 5px; + margin-bottom: 5px; +} + +.Ralfjack::after { + background-image: url('/images/icons/ralfjack/muscle-right.png'); + background-size: 15.4px 15.4px; + display: inline-block; + width: 15.4px; + height: 15.4px; + content: ""; + vertical-align: middle; + margin-left: 5px; + margin-right: 5px; + margin-bottom: 5px; +} + +.Ralfjack { + background-image: url("/images/icons/ralfjack/latvia.png"); + color: #0013e7; + font-weight: bold; + text-shadow: 0px 0px 2px #fff; + font-family: Oswald; + font-size: 15px; + background-size: contain; + max-width: 140px; + text-transform: uppercase; +} + +.Ralfjack:hover { + color: blue; +} + +h3.Ralfjack { + font-size: 25px; + max-width: 164px; + display: flex; + justify-content: center; + align-items: center; +} + +.Flummi { + background-image: url(/images/icons/flummi/nyancat.gif); + background-repeat: no-repeat; + color: rgba(134, 0, 81, 0); + animation: nyan 4.0s linear infinite !important; + margin-right: 6px; +} + +@keyframes nyan { + from {background-position: -40px 1px;} + to {background-position: 80px 1px;} +} + + +@keyframes nyan-big { + from {background-position: -40px 1px; transition: 5s all ease;} + to {background-position: 160px 1px; transition: 5s all ease;} +} + +h3.Flummi { + background-image: url("/images/icons/flummi/nyan-big.gif"); + background-repeat: no-repeat; + color: rgba(134, 0, 81, 0); + animation: nyan-big 8.0s linear infinite !important; + margin-right: 6px; + background-size: contain; + width: calc(120px + 40px); +} + +.dropdown-menu { + border: 1px solid black!important; + padding: 5px!important; + margin: -15px 15px 0!important; + border-radius: 0px!important; + background-color: #161618; + min-width: 100px; +} + +button.w0bmcustom-css { + width: 100%; + padding-bottom: 5px; + background: #232222; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #adadad; +} + +button.w0bmcustom-css:hover { + background: rgba(84, 84, 84, 0.5); +} + +button.chilledblue-css { + width: 100%; + padding-bottom: 5px; + background: #142121; + border: 1px solid #131916; + margin-bottom: 5px; + color: #adadad; +} +button.chilledblue-css:hover { + background: #183333b8; +} + +button.epilepsie-css { + width: 100%; + padding-bottom: 5px; + background: #ff0000; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #ffffff; + font-weight: bold; + text-transform: uppercase; + border: 1px dashed yellow; +} + +button.epilepsie-css:hover { + background: rgba(84, 84, 84, 0.5); +} + +button.xayd-css { + width: 100%; + padding-bottom: 5px; + background: #0b0b0b; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #03dc03; +} + +button.xayd-css:hover { + background: #1b1b1b; +} + +ul.nav.navbar-nav.info-nav { + margin: 0; +} + +#commentAmount { + color: #0bf6ff; + vertical-align: middle; + position: relative; + bottom: 5px; + font-size: 12px; + text-shadow: 1px 0px 1px black; + font-family: Oswald; +} + +/* localhost special css */ +.panel-body[author="localhost"] { + color: #58f940; + font-family: monospace; + text-shadow: 1px 1px 3px lime; +} + +.panel.panel-default[author="localhost"] { + background: black; + color: #58f940; + background-image: url(/images/icons/hagbard/background.gif); + background-repeat: round; + background-size: auto; + text-shadow: 1px 1px 3px #00cb17; +} + +.panel-body[author="localhost"] a { + color: #58f940 !important; +} + +.localhost { + color: #ffffffb3; + font-family: monospace; +} + +/* Firefox is now after 18 years of waiting capable of colorizing the scrollbar, holy shit, the child is now a man, but still a baby */ +.comments, div#tag-display { + scrollbar-color: #21292f #000; +} +.videotitle { + font-family: Oswald; + text-shadow: 1px 1px 1px #1fb2b0; +} +.spoiler img { + filter: brightness(0%); + transition: all .2s ease-in-out; +} + +.spoiler img:hover { + filter: brightness(100%); + transition: all .2s ease-in-out; +} + +.spoiler { + padding: 0!important; +} + +/* 0x40 test css */ +#motd > .panel-body { + padding: 0; +} + +/* spoilered emojis [spoiler] :lolololol: [/spoiler] */ +.spoiler .comment_emoji { + background: black; +} + +/* Experimental title height and size*/ +.videotitle { + font-family: Oswald; + text-shadow: 1px 1px 1px #1fb2b0; + margin-bottom: 2px; + margin-top: 0; +} + +.video-js .vjs-loading-spinner { + display: none; +} + +/* Motd fix */ +.panel.panel-default { + margin-top: 0; +} + +/* Contact */ +input#collapsible[type='checkbox'] { + display: none; +} + +.lbl-toggle { + display: flow-root; + font-weight: bold; + font-family: monospace; + font-size: 1.2rem; + text-transform: uppercase; + text-align: center; + padding: 1rem; + color: #fff; + background: #263942; + cursor: pointer; + border-radius: 7px; + transition: all 0.25s ease-out; +} + +.lbl-toggle::before { + content: ' '; + display: inline-block; + + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid currentColor; + + vertical-align: middle; + margin-right: .7rem; + transform: translateY(-2px); + + transition: transform .2s ease-out; +} + +.collapsible-content .content-inner { + background: rgba(69, 133, 159, 0.2); + background-color: rgba(69, 133, 159, 0.2); + background-position-x: 0%; + background-position-y: 0%; + background-repeat: repeat; + background-attachment: scroll; + background-image: none; + background-size: auto; + background-origin: padding-box; + background-clip: border-box; + border-bottom: 1px solid rgba(255, 255, 255, 0.45); + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + padding: .5rem 1rem; +} + +.collapsible-content { + max-height: 0px; + overflow: hidden; + + transition: max-height .25s ease-in-out; +} + +.toggle:checked + .lbl-toggle + .collapsible-content { + max-height: 350px; +} + +.toggle:checked + .lbl-toggle::before { + transform: rotate(90deg) translateX(-3px); +} + +.toggle:checked + .lbl-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +div.content-inner { + color: #fff; +} + +.glitch-css { + + width: 100%; + padding-bottom: 5px; + background: linear-gradient(to top, #000 0%, #193638 100%); + border: 1px solid #1fb2b0; + margin-bottom: 5px; + color: #fff; + font-family: monospace; + vertical-align: super; + padding: 5px; + border-radius: 5px; + text-transform: uppercase; + font-weight: bold; + font-family: oswald; + line-height: 19px; + +} + +.glitch-css:hover { + opacity: 0.7; +} + +@media (min-width: 1200px) { +.aside + div > .container { + width: 720px; +} +} + +#comment_container_scrollable { + position: relative; + width: 350px; + height: 900px; +} + +.ps__rail-y { + right: 0; +} + +.ps .ps__rail-x:hover, .ps .ps__rail-y:hover, .ps .ps__rail-x:focus, .ps .ps__rail-y:focus, .ps .ps__rail-x.ps--clicking, .ps .ps__rail-y.ps--clicking { + background-color: transparent; + opacity: 0.9; +} + +.ps__rail-y:hover > .ps__thumb-y, .ps__rail-y:focus > .ps__thumb-y, .ps__rail-y.ps--clicking .ps__thumb-y { + cursor: grabbing; + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); +} + +.ps .ps__rail-x:hover, .ps .ps__rail-y:hover, .ps .ps__rail-x:focus, .ps .ps__rail-y:focus, .ps .ps__rail-x.ps--clicking, .ps .ps__rail-y.ps--clicking { + background-color: transparent; + opacity: .9; +} + +#emoji_box_slider { + + position: relative; + width: auto; + height: auto; + +} + +/*.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-content { + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); +} + +.video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-item, .video-js .vjs-menu-button-popup .vjs-menu .vjs-menu-title { + background: linear-gradient(to top, #0a0a0a 0%, #163f42 100%); + border: 1px solid black; +}*/ + +.vjs-menu-item:hover { + opacity: 0.7; +} + +.commentform-panel-footer { + padding: 15px; + display: flex; + justify-content: space-between; +} + +/* literally wtf */ +span.badge.message-badge { + position: absolute; + bottom: 25px; +} + +.modal-body-report.webmreportmodal { + padding: 15px; +} + +button#layout1 { + width: 100%; + padding-bottom: 5px; + background: #3a3838; + padding: 5px; + border: 1px solid black; + margin-bottom: 5px; + color: #adadad; +} + +button#layout2 { + width: 100%; + padding-bottom: 5px; + background: #000000; + padding: 5px; + border: 1px solid #b1a9a9; + margin-bottom: 5px; + color: #ffffff; +} + +button#layout3 { + background: black; + width: 100%; + border: 2px solid white; + font-family: monospace; + color: white; +} + +.fickfackfoo.panel-body { + padding: 5px 5px; +} + +.commentform-panel-footer { + padding: 5px; +} + +.textmodifierss { + /*background: #222222; + border: 1px solid #1fb2b0; + overflow: hidden;*/ +} \ No newline at end of file diff --git a/public/css/w0bmfonts.css b/public/css/w0bmfonts.css new file mode 100644 index 0000000..dfee8eb --- /dev/null +++ b/public/css/w0bmfonts.css @@ -0,0 +1,107 @@ +/*Every font was taken from google.*/ + +/* cyrillic */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(../fonts/DgBpgaYycijFA8v2hNt7MfesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(../fonts/peRd8sj511qE2lHtK-QfcPesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(../fonts/yg0glPPxXUISnKUejCX4qfesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(../fonts/pEobIV_lL25TKBpqVI_a2w.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +/* latin */ +@font-face { + font-family: 'UnifrakturCook'; + font-style: normal; + font-weight: 700; + src: local('UnifrakturCook'), local('UnifrakturCook-Bold'), url(../fonts/ASwh69ykD8iaoYijVEU6RpMdj8Gkv7ccSfgBBVtwm5Y.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../fonts/CWB0XYA8bzo0kSThX0UTuA.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + diff --git a/public/css/xayd.css b/public/css/xayd.css new file mode 100644 index 0000000..c9fc10c --- /dev/null +++ b/public/css/xayd.css @@ -0,0 +1,413 @@ +::-webkit-scrollbar-thumb { + width: 15px; + background: #03dc03!important; +} + +body { + background-color: #040404; + color: #fff; +} + +.navbar-inverse { + background: #0b0b0b; +} + +span.videoinfo { + background: #0b0b0b; +} + +.vidinfo { + color: #03dc03; +} + +.text-center { + color: rgb(3, 220, 3); +} + +#dlbutton { + color: #03dc03; +} + +a { + color: #03dc03; +} + +a:hover, a:focus { + color: #03dc03; +} + +.panel { + background-color: rgb(11, 11, 11); +} + +.video-js .vjs-control-bar { + background-color: rgba(11, 11, 11, 0.91)!important; +} + +.video-js .vjs-play-progress, .video-js .vjs-volume-level { + background-color: #03dc03; +} + +.video-js .vjs-big-play-button:active, .video-js .vjs-big-play-button:focus, .video-js:hover .vjs-big-play-button { + background-color: #03dc03; +} + +.video-js .vjs-loading-spinner { + border-color: #03dc03; +} + +.video-js .vjs-control:focus:before, .video-js .vjs-control:hover:before { + text-shadow: 0 0 0.1em #03dc03, 0 0 0.1em #03dc03, 0 0 0.5em #03dc03; +} + +#sidebar > #motd { + border: 4px solid #03dc03; +} + +#sidebar > .comments, #sidebar > .tags { + border-bottom: 1px solid #03dc03; +} + +.sponsored { + background: #0b0b0b; + border-top: 1px solid #03dc03; +} + +.tags { + background: rgb(11, 11, 11); +} + +div#tag-display { + border-top: 1px solid #03dc03; +} + +.label-default { + background-color: #0b0b0b; + border: 1px solid #03dc03; +} + +.comments { + background: rgb(11, 11, 11); +} + +.navbar-inverse .navbar-nav > li > a { + color: #b5b5b5; +} + +.navbar-inverse .navbar-nav > li > a:hover { + color: #03dc03; + text-shadow: 0 0 5px #03dc03; +} + +.modal-content { + background-color: #0b0b0b; +} + +.login_wrapper { + background: #0b0b0b; + border: 1px solid #03db03; +} + +.btn-primary { + color: #fff; + background-color: #0b0b0b; + border-color: #03db03; +} + +.btn-primary:hover { + color: #fff; + background-color: #1d1d1d; + border-color: #0b940b; +} + +.btn-primary:active, .btn-primary.active, .open>.dropdown-toggle.btn-primary { + color: #fff; + background-color: #000; + border-color: #02d802; +} + +.btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #000; + border-color: #02d802; +} + +.btn-primary:active:hover, .btn-primary.active:hover, .open>.dropdown-toggle.btn-primary:hover, .btn-primary:active:focus, .btn-primary.active:focus, .open>.dropdown-toggle.btn-primary:focus, .btn-primary:active.focus, .btn-primary.active.focus, .open>.dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #000; + border-color: #02d802; +} + +span.addtagsy a { + text-decoration: none; +} + +span.addtagsy a:hover { + color: #03dc03; + text-decoration: none; + background: #2f2f2f; + +} + +span.addtagsy { + font-family: Oswald; + letter-spacing: .4px; + cursor: pointer; +} + +.navbar-brand>img { + filter: hue-rotate(290deg) saturate(1190%); +} + +.thumbnail { + background-color: #0b0b0b; +} + +.caption small { + background: #040404; + color: #03dc03; +} + +.suchleiste { + background: #0b0b0b none; + border: 1px solid #03dc03; +} + +.suchbutton { + background: #03c805 none; +} + +table { + background-color: #0b0b0b; +} + +.pagination>li>a, .pagination>li>span { + background-color: #0b0b0b; +} + +.pagination>.active>a, .pagination>.active>span, .pagination>.active>a:hover, .pagination>.active>span:hover, .pagination>.active>a:focus, .pagination>.active>span:focus { + color: #000000; + background-color: #03dc03; +} + +.pagination>.disabled>span, .pagination>.disabled>span:hover, .pagination>.disabled>span:focus, .pagination>.disabled>a, .pagination>.disabled>a:hover, .pagination>.disabled>a:focus { + background-color: #0b0b0b; +} + +.pagination>li>a:hover, .pagination>li>span:hover, .pagination>li>a:focus, .pagination>li>span:focus { + background-color: rgba(3, 220, 3, 0.67); + border-color: #03dc03; +} + +.box { + background: #0b0b0b; +} + +code { + color: #03dc05; + background-color: #1d1919; +} + +.anime-thumb-opener { + background: #0b0b0b; + border: 2px solid #03dc03; +} + +.anime-thumb { + border: 2px solid #222; + background: #0b0b0b; +} + +.onclick-menu-content { + background-color: #0b0b0b; + border: 1px solid; +} + +#parent { + background: #0b0b0b; + border-radius: 0; + border: 1px solid #03dc03; + padding: 5px; + cursor: pointer; +} + +.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { + background-color: #006315; +} + +.list-group-item { + background-color: #0b0b0b; +} + +h3#upheader { + color: #03dc03; + text-shadow: 1px 1px 20px #03dc03; +} + +select.form-control, input.form-control { + background-color: #0b0b0b; +} + +.blah { + background: #0b0b0b; +} + +.bootstrap-tagsinput { + background: rgb(11, 11, 11) none repeat scroll 0 0; + border: 1px solid #282828; +} + +.label-info { + background-color: #0b0b0b; + border: 1px solid #03dc03; +} + +#dragndrop { + background-color: #0b0b0b; +} + +#dragndrop-text:hover { + color: #03db03; +} + +#btn-upload:hover>span#laz0r-fire { + background: #03dc03; +} + +#btn-upload:hover>span.laz0r { + text-shadow: 0 0 5px #03dc03; + color: #000000; +} + +.onclick-menu:before { + color: #03dc03; +} + +#commentForm textarea { + background: rgb(11, 11, 11) none repeat scroll 0 0; +} + +label[for=tag-add-toggle] { + color: #03dc03; +} + +label[for=tag-add-toggle]:hover { + text-decoration: none; + color: #03dc03; + text-shadow: 0 0 5px #03dc03; +} + +a.delete-tag.default-link { + color: #c00; +} + +a.navbar-brand { + content: ""; + background-size: contain; + background-image: url(/w0bm-logo-green.png); + background-repeat: no-repeat; +} + +.navbar-brand>img { + filter: hue-rotate(290deg) saturate(1190%); + visibility: hidden; +} + +.list-group-item-info { + background-color: #03dc03; + color: black !important; +} + +a.list-group-item-info:hover, button.list-group-item-info:hover, a.list-group-item-info:focus, button.list-group-item-info:focus { + background-color: #03dc03ad; +} + +.badge { + background-color: #03dc03; +} + +.popover { + background-color: #0b0b0b; + padding: 0px; +} + +.popover-title { + padding: 5px 15px; + border-radius: 0; +} + +amount { + color: #03dc03; +} + +.nav>li>a:hover, .nav>li>a:focus { + text-decoration: none; + background-color: #040404; +} + +.strong-colored strong { + color: #03dc03; +} + +.about-tags { + background: rgb(11, 11, 11) none repeat scroll 0 0; + border: 1px solid #282828; + margin-bottom: 10px; +} + +hr { + border-top: 2px solid #03dc03; +} + +@media (max-width: 690px) { +a.first { +border-bottom: 1px solid #03dc03; +border-right: 1px solid #03dc03; +background: #0b0b0b; +} +} + +@media (max-width: 690px) { +a.last { +border-bottom: 1px solid #03dc03; +border-left: 1px solid #03dc03; +background: #0b0b0b; +} +} + +@media (max-width: 768px) { +.navbar-inverse { + border-bottom: 1px solid #03dc03; +} +} + +@media (max-width: 767px) { +aside#sidebar::before { + content: ""; + border: none; +} +} + +@media (max-width: 767px) { +#sidebar, #motd, #commentForm, .tags, .comments { + background: #0b0b0b; +} +} + +@media (max-width: 767px) { +.vidinfo { + background: #0b0b0b; +} +} + +@media (max-width: 360px) { +#sidebar > .tags { + background: rgb(11, 11, 11); + border-top: 1px solid #03dc03; + border-left: 0px solid #03dc03; +} +} + +#commentAmount { + color: #d4d4d4; +} diff --git a/public/duke.png b/public/duke.png new file mode 100644 index 0000000..e59da8d Binary files /dev/null and b/public/duke.png differ diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..b6a8ce4 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/fonts/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..ed0b13c Binary files /dev/null and b/public/fonts/-2n2p-_Y08sg57CNWQfKNvesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/ASwh69ykD8iaoYijVEU6RpMdj8Gkv7ccSfgBBVtwm5Y.woff2 b/public/fonts/ASwh69ykD8iaoYijVEU6RpMdj8Gkv7ccSfgBBVtwm5Y.woff2 new file mode 100644 index 0000000..61711ad Binary files /dev/null and b/public/fonts/ASwh69ykD8iaoYijVEU6RpMdj8Gkv7ccSfgBBVtwm5Y.woff2 differ diff --git a/public/fonts/CWB0XYA8bzo0kSThX0UTuA.woff2 b/public/fonts/CWB0XYA8bzo0kSThX0UTuA.woff2 new file mode 100644 index 0000000..120796b Binary files /dev/null and b/public/fonts/CWB0XYA8bzo0kSThX0UTuA.woff2 differ diff --git a/public/fonts/DgBpgaYycijFA8v2hNt7MfesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/DgBpgaYycijFA8v2hNt7MfesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..619882a Binary files /dev/null and b/public/fonts/DgBpgaYycijFA8v2hNt7MfesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..0c7aec2 Binary files /dev/null and b/public/fonts/Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..7936b66 Binary files /dev/null and b/public/fonts/NdF9MtnOpLzo-noMoG0miPesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..e4546e4 Binary files /dev/null and b/public/fonts/ek4gzZ-GeXAPcSbHtCeQI_esZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/fontawesome-webfont.eot b/public/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/public/fonts/fontawesome-webfont.eot differ diff --git a/public/fonts/fontawesome-webfont.svg b/public/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/public/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fontawesome-webfont.ttf b/public/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/public/fonts/fontawesome-webfont.ttf differ diff --git a/public/fonts/fontawesome-webfont.woff b/public/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/public/fonts/fontawesome-webfont.woff differ diff --git a/public/fonts/fontawesome-webfont.woff2 b/public/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/public/fonts/fontawesome-webfont.woff2 differ diff --git a/public/fonts/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..d08397f Binary files /dev/null and b/public/fonts/mErvLBYg_cXG3rLvUsKT_fesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/pEobIV_lL25TKBpqVI_a2w.woff2 b/public/fonts/pEobIV_lL25TKBpqVI_a2w.woff2 new file mode 100644 index 0000000..c13c6da Binary files /dev/null and b/public/fonts/pEobIV_lL25TKBpqVI_a2w.woff2 differ diff --git a/public/fonts/peRd8sj511qE2lHtK-QfcPesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/peRd8sj511qE2lHtK-QfcPesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..ec5a46c Binary files /dev/null and b/public/fonts/peRd8sj511qE2lHtK-QfcPesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..f630772 Binary files /dev/null and b/public/fonts/u0TOpm082MNkS5K0Q4rhqvesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/fonts/vcr.ttf b/public/fonts/vcr.ttf new file mode 100644 index 0000000..dcca687 Binary files /dev/null and b/public/fonts/vcr.ttf differ diff --git a/public/fonts/yg0glPPxXUISnKUejCX4qfesZW2xOQ-xsNqO47m55DA.woff2 b/public/fonts/yg0glPPxXUISnKUejCX4qfesZW2xOQ-xsNqO47m55DA.woff2 new file mode 100644 index 0000000..f5372a0 Binary files /dev/null and b/public/fonts/yg0glPPxXUISnKUejCX4qfesZW2xOQ-xsNqO47m55DA.woff2 differ diff --git a/public/gaypride.svg b/public/gaypride.svg new file mode 100644 index 0000000..047e59b --- /dev/null +++ b/public/gaypride.svg @@ -0,0 +1,92 @@ + +image/svg+xml \ No newline at end of file diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..c582053 --- /dev/null +++ b/public/index.php @@ -0,0 +1,58 @@ + + */ + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader for +| our application. We just need to utilize it! We'll simply require it +| into the script here so that we don't have to worry about manual +| loading any of our classes later on. It feels nice to relax. +| +*/ + +require __DIR__.'/../bootstrap/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Turn On The Lights +|-------------------------------------------------------------------------- +| +| We need to illuminate PHP development, so let us turn on the lights. +| This bootstraps the framework and gets it ready for use, then it +| will load up this application so that we can run it and send +| the responses back to the browser and delight our users. +| +*/ + +$app = require_once __DIR__.'/../bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request +| through the kernel, and send the associated response back to +| the client's browser allowing them to enjoy the creative +| and wonderful application we have prepared for them. +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); diff --git a/public/irccat.gif b/public/irccat.gif new file mode 100644 index 0000000..9639afc Binary files /dev/null and b/public/irccat.gif differ diff --git a/public/js/animethumbnailer.js b/public/js/animethumbnailer.js new file mode 100644 index 0000000..6891eb9 --- /dev/null +++ b/public/js/animethumbnailer.js @@ -0,0 +1,18 @@ +window.onload = function (){ + var video = document.getElementById('video_html5_api'); + var thecanvas = document.getElementById('thecanvas'); + var img = document.getElementById('thumbnail_img'); + + video.addEventListener('pause', function(){ + draw( video, thecanvas, img); + }, false); +}; + +function draw( video, thecanvas, img ){ + img.setAttribute('crossOrigin', 'anonymous'); + var context = thecanvas.getContext('2d'); + context.drawImage( video, 0, 0, thecanvas.width, thecanvas.height); + var dataURL = thecanvas.toDataURL(); + img.setAttribute('src', dataURL); + video.setAttribute('crossOrigin', 'anonymous'); +} diff --git a/public/js/bootstrap-tagsinput.min.js b/public/js/bootstrap-tagsinput.min.js new file mode 100644 index 0000000..3adbfd9 --- /dev/null +++ b/public/js/bootstrap-tagsinput.min.js @@ -0,0 +1,7 @@ +/* + * bootstrap-tagsinput v0.6.1 by Tim Schlechter + * + */ + +!function(a){"use strict";function b(b,c){this.itemsArray=[],this.$element=a(b),this.$element.hide(),this.isSelect="SELECT"===b.tagName,this.multiple=this.isSelect&&b.hasAttribute("multiple"),this.objectItems=c&&c.itemValue,this.placeholderText=b.hasAttribute("placeholder")?this.$element.attr("placeholder"):"",this.inputSize=Math.max(1,this.placeholderText.length),this.$container=a('
    '),this.$input=a('').appendTo(this.$container),this.$element.before(this.$container),this.build(c)}function c(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(a){return a[c]}}}function d(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(){return c}}}function e(a){return a?i.text(a).html():""}function f(a){var b=0;if(document.selection){a.focus();var c=document.selection.createRange();c.moveStart("character",-a.value.length),b=c.text.length}else(a.selectionStart||"0"==a.selectionStart)&&(b=a.selectionStart);return b}function g(b,c){var d=!1;return a.each(c,function(a,c){if("number"==typeof c&&b.which===c)return d=!0,!1;if(b.which===c.which){var e=!c.hasOwnProperty("altKey")||b.altKey===c.altKey,f=!c.hasOwnProperty("shiftKey")||b.shiftKey===c.shiftKey,g=!c.hasOwnProperty("ctrlKey")||b.ctrlKey===c.ctrlKey;if(e&&f&&g)return d=!0,!1}}),d}var h={tagClass:function(a){return"label label-info"},itemValue:function(a){return a?a.toString():a},itemText:function(a){return this.itemValue(a)},itemTitle:function(a){return null},freeInput:!0,addOnBlur:!0,maxTags:void 0,maxChars:void 0,confirmKeys:[13,44],delimiter:",",delimiterRegex:null,cancelConfirmKeysOnEmpty:!0,onTagExists:function(a,b){b.hide().fadeIn()},trimValue:!1,allowDuplicates:!1};b.prototype={constructor:b,add:function(b,c,d){var f=this;if(!(f.options.maxTags&&f.itemsArray.length>=f.options.maxTags)&&(b===!1||b)){if("string"==typeof b&&f.options.trimValue&&(b=a.trim(b)),"object"==typeof b&&!f.objectItems)throw"Can't add objects when itemValue option is not set";if(!b.toString().match(/^\s*$/)){if(f.isSelect&&!f.multiple&&f.itemsArray.length>0&&f.remove(f.itemsArray[0]),"string"==typeof b&&"INPUT"===this.$element[0].tagName){var g=f.options.delimiterRegex?f.options.delimiterRegex:f.options.delimiter,h=b.split(g);if(h.length>1){for(var i=0;if.options.maxInputLength)){var o=a.Event("beforeItemAdd",{item:b,cancel:!1,options:d});if(f.$element.trigger(o),!o.cancel){f.itemsArray.push(b);var p=a(''+e(k)+'');if(p.data("item",b),f.findInputWrapper().before(p),p.after(" "),f.isSelect&&!a('option[value="'+encodeURIComponent(j)+'"]',f.$element)[0]){var q=a("");q.data("item",b),q.attr("value",j),f.$element.append(q)}c||f.pushVal(),(f.options.maxTags===f.itemsArray.length||f.items().toString().length===f.options.maxInputLength)&&f.$container.addClass("bootstrap-tagsinput-max"),f.$element.trigger(a.Event("itemAdded",{item:b,options:d}))}}}else if(f.options.onTagExists){var r=a(".tag",f.$container).filter(function(){return a(this).data("item")===n});f.options.onTagExists(b,r)}}}},remove:function(b,c,d){var e=this;if(e.objectItems&&(b="object"==typeof b?a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==e.options.itemValue(b)}):a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==b}),b=b[b.length-1]),b){var f=a.Event("beforeItemRemove",{item:b,cancel:!1,options:d});if(e.$element.trigger(f),f.cancel)return;a(".tag",e.$container).filter(function(){return a(this).data("item")===b}).remove(),a("option",e.$element).filter(function(){return a(this).data("item")===b}).remove(),-1!==a.inArray(b,e.itemsArray)&&e.itemsArray.splice(a.inArray(b,e.itemsArray),1)}c||e.pushVal(),e.options.maxTags>e.itemsArray.length&&e.$container.removeClass("bootstrap-tagsinput-max"),e.$element.trigger(a.Event("itemRemoved",{item:b,options:d}))},removeAll:function(){var b=this;for(a(".tag",b.$container).remove(),a("option",b.$element).remove();b.itemsArray.length>0;)b.itemsArray.pop();b.pushVal()},refresh:function(){var b=this;a(".tag",b.$container).each(function(){var c=a(this),d=c.data("item"),f=b.options.itemValue(d),g=b.options.itemText(d),h=b.options.tagClass(d);if(c.attr("class",null),c.addClass("tag "+e(h)),c.contents().filter(function(){return 3==this.nodeType})[0].nodeValue=e(g),b.isSelect){var i=a("option",b.$element).filter(function(){return a(this).data("item")===d});i.attr("value",f)}})},items:function(){return this.itemsArray},pushVal:function(){var b=this,c=a.map(b.items(),function(a){return b.options.itemValue(a).toString()});b.$element.val(c,!0).trigger("change")},build:function(b){var e=this;if(e.options=a.extend({},h,b),e.objectItems&&(e.options.freeInput=!1),c(e.options,"itemValue"),c(e.options,"itemText"),d(e.options,"tagClass"),e.options.typeahead){var i=e.options.typeahead||{};d(i,"source"),e.$input.typeahead(a.extend({},i,{source:function(b,c){function d(a){for(var b=[],d=0;d$1")}}))}if(e.options.typeaheadjs){var j=null,k={},l=e.options.typeaheadjs;a.isArray(l)?(j=l[0],k=l[1]):k=l,e.$input.typeahead(j,k).on("typeahead:selected",a.proxy(function(a,b){k.valueKey?e.add(b[k.valueKey]):e.add(b),e.$input.typeahead("val","")},e))}e.$container.on("click",a.proxy(function(a){e.$element.attr("disabled")||e.$input.removeAttr("disabled"),e.$input.focus()},e)),e.options.addOnBlur&&e.options.freeInput&&e.$input.on("focusout",a.proxy(function(b){0===a(".typeahead, .twitter-typeahead",e.$container).length&&(e.add(e.$input.val()),e.$input.val(""))},e)),e.$container.on("keydown","input",a.proxy(function(b){var c=a(b.target),d=e.findInputWrapper();if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");switch(b.which){case 8:if(0===f(c[0])){var g=d.prev();g.length&&e.remove(g.data("item"))}break;case 46:if(0===f(c[0])){var h=d.next();h.length&&e.remove(h.data("item"))}break;case 37:var i=d.prev();0===c.val().length&&i[0]&&(i.before(d),c.focus());break;case 39:var j=d.next();0===c.val().length&&j[0]&&(j.after(d),c.focus())}var k=c.val().length;Math.ceil(k/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("keypress","input",a.proxy(function(b){var c=a(b.target);if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");var d=c.val(),f=e.options.maxChars&&d.length>=e.options.maxChars;e.options.freeInput&&(g(b,e.options.confirmKeys)||f)&&(0!==d.length&&(e.add(f?d.substr(0,e.options.maxChars):d),c.val("")),e.options.cancelConfirmKeysOnEmpty===!1&&b.preventDefault());var h=c.val().length;Math.ceil(h/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("click","[data-role=remove]",a.proxy(function(b){e.$element.attr("disabled")||e.remove(a(b.target).closest(".tag").data("item"))},e)),e.options.itemValue===h.itemValue&&("INPUT"===e.$element[0].tagName?e.add(e.$element.val()):a("option",e.$element).each(function(){e.add(a(this).attr("value"),!0)}))},destroy:function(){var a=this;a.$container.off("keypress","input"),a.$container.off("click","[role=remove]"),a.$container.remove(),a.$element.removeData("tagsinput"),a.$element.show()},focus:function(){this.$input.focus()},input:function(){return this.$input},findInputWrapper:function(){for(var b=this.$input[0],c=this.$container[0];b&&b.parentNode!==c;)b=b.parentNode;return a(b)}},a.fn.tagsinput=function(c,d,e){var f=[];return this.each(function(){var g=a(this).data("tagsinput");if(g)if(c||d){if(void 0!==g[c]){if(3===g[c].length&&void 0!==e)var h=g[c](d,null,e);else var h=g[c](d);void 0!==h&&f.push(h)}}else f.push(g);else g=new b(this,c),a(this).data("tagsinput",g),f.push(g),"SELECT"===this.tagName&&a("option",a(this)).attr("selected","selected"),a(this).val(a(this).val())}),"string"==typeof c?f.length>1?f:f[0]:f},a.fn.tagsinput.Constructor=b;var i=a("
    ");a(function(){a("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput()})}(window.jQuery); +//# sourceMappingURL=bootstrap-tagsinput.min.js.map \ No newline at end of file diff --git a/public/js/bootstrap.min.js b/public/js/bootstrap.min.js new file mode 100644 index 0000000..133aeec --- /dev/null +++ b/public/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/public/js/clipboard.min.js b/public/js/clipboard.min.js new file mode 100644 index 0000000..7a4fde6 --- /dev/null +++ b/public/js/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([function(t,e,n){var o,r,i;!function(a,c){r=[t,n(7)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(t){return t&&t.__esModule?t:{default:t}}(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})},function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return r(t,e,n);if(c.nodeList(t))return i(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function r(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function i(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(6),u=n(5);t.exports=o},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){r.off(t,o),e.apply(n,arguments)}var r=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;for(o;o0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},function(t,e){function n(t,e){for(;t&&t.nodeType!==o;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=n},function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function r(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,r,i)}))}function i(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(4);t.exports=r},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){function n(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}t.exports=n}])}); \ No newline at end of file diff --git a/public/js/clippy.js b/public/js/clippy.js new file mode 100644 index 0000000..a787621 --- /dev/null +++ b/public/js/clippy.js @@ -0,0 +1,1015 @@ +var clippy = {}; + +/****** + * + * + * @constructor + */ +clippy.Agent = function (path, data, sounds) { + this.path = path; + + this._queue = new clippy.Queue($.proxy(this._onQueueEmpty, this)); + + this._el = $('
    ').hide(); + + $(document.body).append(this._el); + + this._animator = new clippy.Animator(this._el, path, data, sounds); + + this._balloon = new clippy.Balloon(this._el); + + this._setupEvents(); +}; + +clippy.Agent.prototype = { + + /**************************** API ************************************/ + + /*** + * + * @param {Number} x + * @param {Number} y + */ + gestureAt:function (x, y) { + var d = this._getDirection(x, y); + var gAnim = 'Gesture' + d; + var lookAnim = 'Look' + d; + + var animation = this.hasAnimation(gAnim) ? gAnim : lookAnim; + return this.play(animation); + }, + + /*** + * + * @param {Boolean=} fast + * + */ + hide:function (fast, callback) { + this._hidden = true; + var el = this._el; + this.stop(); + if (fast) { + this._el.hide(); + this.stop(); + this.pause(); + if (callback) callback(); + return; + } + + return this._playInternal('Hide', function () { + el.hide(); + this.pause(); + if (callback) callback(); + }) + }, + + + moveTo:function (x, y, duration) { + var dir = this._getDirection(x, y); + var anim = 'Move' + dir; + if (duration === undefined) duration = 1000; + + this._addToQueue(function (complete) { + // the simple case + if (duration === 0) { + this._el.css({top:y, left:x}); + this.reposition(); + complete(); + return; + } + + // no animations + if (!this.hasAnimation(anim)) { + this._el.animate({top:y, left:x}, duration, complete); + return; + } + + var callback = $.proxy(function (name, state) { + // when exited, complete + if (state === clippy.Animator.States.EXITED) { + complete(); + } + // if waiting, + if (state === clippy.Animator.States.WAITING) { + this._el.animate({top:y, left:x}, duration, $.proxy(function () { + // after we're done with the movement, do the exit animation + this._animator.exitAnimation(); + }, this)); + } + + }, this); + + this._playInternal(anim, callback); + }, this); + }, + + _playInternal:function (animation, callback) { + + // if we're inside an idle animation, + if (this._isIdleAnimation() && this._idleDfd && this._idleDfd.state() === 'pending') { + this._idleDfd.done($.proxy(function () { + this._playInternal(animation, callback); + }, this)) + } + + this._animator.showAnimation(animation, callback); + }, + + play:function (animation, timeout, cb) { + if (!this.hasAnimation(animation)) return false; + + if (timeout === undefined) timeout = 5000; + + + this._addToQueue(function (complete) { + var completed = false; + // handle callback + var callback = function (name, state) { + if (state === clippy.Animator.States.EXITED) { + completed = true; + if (cb) cb(); + complete(); + } + }; + + // if has timeout, register a timeout function + if (timeout) { + window.setTimeout($.proxy(function () { + if (completed) return; + // exit after timeout + this._animator.exitAnimation(); + }, this), timeout) + } + + this._playInternal(animation, callback); + }, this); + + return true; + }, + + /*** + * + * @param {Boolean=} fast + */ + show:function (fast) { + + this._hidden = false; + if (fast) { + this._el.show(); + this.resume(); + this._onQueueEmpty(); + return; + } + + if (this._el.css('top') === 'auto' || !this._el.css('left') === 'auto') { + var left = $(window).width() * 0.8; + var top = ($(window).height() + $(document).scrollTop()) * 0.8; + this._el.css({top:top, left:left}); + } + + this.resume(); + return this.play('Show'); + }, + + /*** + * + * @param {String} text + */ + speak:function (text, hold) { + this._addToQueue(function (complete) { + this._balloon.speak(complete, text, hold); + }, this); + }, + + + /*** + * Close the current balloon + */ + closeBalloon:function () { + this._balloon.hide(); + }, + + delay:function (time) { + time = time || 250; + + this._addToQueue(function (complete) { + this._onQueueEmpty(); + window.setTimeout(complete, time); + }); + }, + + /*** + * Skips the current animation + */ + stopCurrent:function () { + this._animator.exitAnimation(); + this._balloon.close(); + }, + + + stop:function () { + // clear the queue + this._queue.clear(); + this._animator.exitAnimation(); + this._balloon.hide(); + }, + + /*** + * + * @param {String} name + * @returns {Boolean} + */ + hasAnimation:function (name) { + return this._animator.hasAnimation(name); + }, + + /*** + * Gets a list of animation names + * + * @return {Array.} + */ + animations:function () { + return this._animator.animations(); + }, + + /*** + * Play a random animation + * @return {jQuery.Deferred} + */ + animate:function () { + var animations = this.animations(); + var anim = animations[Math.floor(Math.random() * animations.length)]; + // skip idle animations + if (anim.indexOf('Idle') === 0) { + return this.animate(); + } + return this.play(anim); + }, + + /**************************** Utils ************************************/ + + /*** + * + * @param {Number} x + * @param {Number} y + * @return {String} + * @private + */ + _getDirection:function (x, y) { + var offset = this._el.offset(); + var h = this._el.height(); + var w = this._el.width(); + + var centerX = (offset.left + w / 2); + var centerY = (offset.top + h / 2); + + + var a = centerY - y; + var b = centerX - x; + + var r = Math.round((180 * Math.atan2(a, b)) / Math.PI); + + // Left and Right are for the character, not the screen :-/ + if (-45 <= r && r < 45) return 'Right'; + if (45 <= r && r < 135) return 'Up'; + if (135 <= r && r <= 180 || -180 <= r && r < -135) return 'Left'; + if (-135 <= r && r < -45) return 'Down'; + + // sanity check + return 'Top'; + }, + + /**************************** Queue and Idle handling ************************************/ + + /*** + * Handle empty queue. + * We need to transition the animation to an idle state + * @private + */ + _onQueueEmpty:function () { + if (this._hidden || this._isIdleAnimation()) return; + var idleAnim = this._getIdleAnimation(); + this._idleDfd = $.Deferred(); + + this._animator.showAnimation(idleAnim, $.proxy(this._onIdleComplete, this)); + }, + + _onIdleComplete:function (name, state) { + if (state === clippy.Animator.States.EXITED) { + this._idleDfd.resolve(); + } + }, + + + /*** + * Is the current animation is Idle? + * @return {Boolean} + * @private + */ + _isIdleAnimation:function () { + var c = this._animator.currentAnimationName; + return c && c.indexOf('Idle') === 0; + }, + + + /** + * Gets a random Idle animation + * @return {String} + * @private + */ + _getIdleAnimation:function () { + var animations = this.animations(); + var r = []; + for (var i = 0; i < animations.length; i++) { + var a = animations[i]; + if (a.indexOf('Idle') === 0) { + r.push(a); + } + } + + // pick one + var idx = Math.floor(Math.random() * r.length); + return r[idx]; + }, + + /**************************** Events ************************************/ + + _setupEvents:function () { + $(window).on('resize', $.proxy(this.reposition, this)); + + this._el.on('mousedown', $.proxy(this._onMouseDown, this)); + + this._el.on('dblclick', $.proxy(this._onDoubleClick, this)); + }, + + _onDoubleClick:function () { + if (!this.play('ClickedOn')) { + this.animate(); + } + }, + + reposition:function () { + if (!this._el.is(':visible')) return; + var o = this._el.offset(); + var bH = this._el.outerHeight(); + var bW = this._el.outerWidth(); + + var wW = $(window).width(); + var wH = $(window).height(); + var sT = $(window).scrollTop(); + var sL = $(window).scrollLeft(); + + var top = o.top - sT; + var left = o.left - sL; + var m = 5; + if (top - m < 0) { + top = m; + } else if ((top + bH + m) > wH) { + top = wH - bH - m; + } + + if (left - m < 0) { + left = m; + } else if (left + bW + m > wW) { + left = wW - bW - m; + } + + this._el.css({left:left, top:top}); + // reposition balloon + this._balloon.reposition(); + }, + + _onMouseDown:function (e) { + e.preventDefault(); + this._startDrag(e); + }, + + + /**************************** Drag ************************************/ + + _startDrag:function (e) { + // pause animations + this.pause(); + this._balloon.hide(true); + this._offset = this._calculateClickOffset(e); + + this._moveHandle = $.proxy(this._dragMove, this); + this._upHandle = $.proxy(this._finishDrag, this); + + $(window).on('mousemove', this._moveHandle); + $(window).on('mouseup', this._upHandle); + + this._dragUpdateLoop = window.setTimeout($.proxy(this._updateLocation, this), 10); + }, + + _calculateClickOffset:function (e) { + var mouseX = e.pageX; + var mouseY = e.pageY; + var o = this._el.offset(); + return { + top:mouseY - o.top, + left:mouseX - o.left + } + + }, + + _updateLocation:function () { + this._el.css({top:this._targetY, left:this._taregtX}); + this._dragUpdateLoop = window.setTimeout($.proxy(this._updateLocation, this), 10); + }, + + _dragMove:function (e) { + e.preventDefault(); + var x = e.clientX - this._offset.left; + var y = e.clientY - this._offset.top; + this._taregtX = x; + this._targetY = y; + }, + + _finishDrag:function () { + window.clearTimeout(this._dragUpdateLoop); + // remove handles + $(window).off('mousemove', this._moveHandle); + $(window).off('mouseup', this._upHandle); + // resume animations + this._balloon.show(); + this.reposition(); + this.resume(); + + }, + + _addToQueue:function (func, scope) { + if (scope) func = $.proxy(func, scope); + this._queue.queue(func); + }, + + /**************************** Pause and Resume ************************************/ + + pause:function () { + this._animator.pause(); + this._balloon.pause(); + + }, + + resume:function () { + this._animator.resume(); + this._balloon.resume(); + } + +}; + +/****** + * + * + * @constructor + */ +clippy.Animator = function (el, path, data, sounds) { + this._el = el; + this._data = data; + this._path = path; + this._currentFrameIndex = 0; + this._currentFrame = undefined; + this._exiting = false; + this._currentAnimation = undefined; + this._endCallback = undefined; + this._started = false; + this._sounds = {}; + this.currentAnimationName = undefined; + this.preloadSounds(sounds); + this._overlays = [this._el]; + var curr = this._el; + + this._setupElement(this._el); + for (var i = 1; i < this._data.overlayCount; i++) { + var inner = this._setupElement($('
    ')); + + curr.append(inner); + this._overlays.push(inner); + curr = inner; + } +}; + +clippy.Animator.prototype = { + _setupElement:function (el) { + var frameSize = this._data.framesize; + el.css('display', "none"); + el.css({width:frameSize[0], height:frameSize[1]}); + el.css('background', "url('" + this._path + "/map.png') no-repeat"); + + return el; + }, + + animations:function () { + var r = []; + var d = this._data.animations; + for (var n in d) { + r.push(n); + } + return r; + }, + + preloadSounds:function (sounds) { + + for (var i = 0; i < this._data.sounds.length; i++) { + var snd = this._data.sounds[i]; + var uri = sounds[snd]; + if (!uri) continue; + this._sounds[snd] = new Audio(uri); + + } + }, + hasAnimation:function (name) { + return !!this._data.animations[name]; + }, + + exitAnimation:function () { + this._exiting = true; + }, + + + showAnimation:function (animationName, stateChangeCallback) { + this._exiting = false; + + if (!this.hasAnimation(animationName)) { + return false; + } + + this._currentAnimation = this._data.animations[animationName]; + this.currentAnimationName = animationName; + + + if (!this._started) { + this._step(); + this._started = true; + } + + this._currentFrameIndex = 0; + this._currentFrame = undefined; + this._endCallback = stateChangeCallback; + + return true; + }, + + + _draw:function () { + var images = []; + if (this._currentFrame) images = this._currentFrame.images || []; + + for (var i = 0; i < this._overlays.length; i++) { + if (i < images.length) { + var xy = images[i]; + var bg = -xy[0] + 'px ' + -xy[1] + 'px'; + this._overlays[i].css({'background-position':bg, 'display':'block'}); + } + else { + this._overlays[i].css('display', 'none'); + } + + } + }, + + _getNextAnimationFrame:function () { + if (!this._currentAnimation) return undefined; + // No current frame. start animation. + if (!this._currentFrame) return 0; + var currentFrame = this._currentFrame; + var branching = this._currentFrame.branching; + + + if (this._exiting && currentFrame.exitBranch !== undefined) { + return currentFrame.exitBranch; + } + else if (branching) { + var rnd = Math.random() * 100; + for (var i = 0; i < branching.branches.length; i++) { + var branch = branching.branches[i]; + if (rnd <= branch.weight) { + return branch.frameIndex; + } + + rnd -= branch.weight; + } + } + + return this._currentFrameIndex + 1; + }, + + _playSound:function () { + var s = this._currentFrame.sound; + if (!s) return; + var audio = this._sounds[s]; + if (audio) audio.play(); + }, + + _atLastFrame:function () { + return this._currentFrameIndex >= this._currentAnimation.frames.length - 1; + }, + + _step:function () { + if (!this._currentAnimation) return; + var newFrameIndex = Math.min(this._getNextAnimationFrame(), this._currentAnimation.frames.length - 1); + var frameChanged = !this._currentFrame || this._currentFrameIndex !== newFrameIndex; + this._currentFrameIndex = newFrameIndex; + + // always switch frame data, unless we're at the last frame of an animation with a useExitBranching flag. + if (!(this._atLastFrame() && this._currentAnimation.useExitBranching)) { + this._currentFrame = this._currentAnimation.frames[this._currentFrameIndex]; + } + + this._draw(); + this._playSound(); + + this._loop = window.setTimeout($.proxy(this._step, this), this._currentFrame.duration); + + + // fire events if the frames changed and we reached an end + if (this._endCallback && frameChanged && this._atLastFrame()) { + if (this._currentAnimation.useExitBranching && !this._exiting) { + this._endCallback(this.currentAnimationName, clippy.Animator.States.WAITING); + } + else { + this._endCallback(this.currentAnimationName, clippy.Animator.States.EXITED); + } + } + }, + + /*** + * Pause animation execution + */ + pause:function () { + window.clearTimeout(this._loop); + }, + + /*** + * Resume animation + */ + resume:function () { + this._step(); + } +}; + +clippy.Animator.States = { WAITING:1, EXITED:0 }; + +/****** + * + * + * @constructor + */ +clippy.Balloon = function (targetEl) { + this._targetEl = targetEl; + + this._hidden = true; + this._setup(); +}; + +clippy.Balloon.prototype = { + + WORD_SPEAK_TIME:320, + CLOSE_BALLOON_DELAY:2000, + + _setup:function () { + + this._balloon = $('
    ').hide(); + this._content = this._balloon.find('.clippy-content'); + + $(document.body).append(this._balloon); + }, + + reposition:function () { + var sides = ['top-left', 'top-right', 'bottom-left', 'bottom-right']; + + for (var i = 0; i < sides.length; i++) { + var s = sides[i]; + this._position(s); + if (!this._isOut()) break; + } + }, + + _BALLOON_MARGIN:15, + + /*** + * + * @param side + * @private + */ + _position:function (side) { + var o = this._targetEl.offset(); + var h = this._targetEl.height(); + var w = this._targetEl.width(); + + var bH = this._balloon.outerHeight(); + var bW = this._balloon.outerWidth(); + + this._balloon.removeClass('clippy-top-left'); + this._balloon.removeClass('clippy-top-right'); + this._balloon.removeClass('clippy-bottom-right'); + this._balloon.removeClass('clippy-bottom-left'); + + var left, top; + switch (side) { + case 'top-left': + // right side of the balloon next to the right side of the agent + left = o.left + w - bW; + top = o.top - bH - this._BALLOON_MARGIN; + break; + case 'top-right': + // left side of the balloon next to the left side of the agent + left = o.left; + top = o.top - bH - this._BALLOON_MARGIN; + break; + case 'bottom-right': + // right side of the balloon next to the right side of the agent + left = o.left; + top = o.top + h + this._BALLOON_MARGIN; + break; + case 'bottom-left': + // left side of the balloon next to the left side of the agent + left = o.left + w - bW; + top = o.top + h + this._BALLOON_MARGIN; + break; + } + + this._balloon.css({top:top, left:left}); + this._balloon.addClass('clippy-' + side); + }, + + _isOut:function () { + var o = this._balloon.offset(); + var bH = this._balloon.outerHeight(); + var bW = this._balloon.outerWidth(); + + var wW = $(window).width(); + var wH = $(window).height(); + var sT = $(document).scrollTop(); + var sL = $(document).scrollLeft(); + + var top = o.top - sT; + var left = o.left - sL; + var m = 5; + if (top - m < 0 || left - m < 0) return true; + if ((top + bH + m) > wH || (left + bW + m) > wW) return true; + + return false; + }, + + speak:function (complete, text, hold) { + this._hidden = false; + this.show(); + var c = this._content; + // set height to auto + c.height('auto'); + c.width('auto'); + // add the text + c.text(text); + // set height + c.height(c.height()); + c.width(c.width()); + c.text(''); + this.reposition(); + + this._complete = complete; + this._sayWords(text, hold, complete); + }, + + show:function () { + if (this._hidden) return; + this._balloon.show(); + }, + + hide:function (fast) { + if (fast) { + this._balloon.hide(); + return; + } + + this._hiding = window.setTimeout($.proxy(this._finishHideBalloon, this), this.CLOSE_BALLOON_DELAY); + }, + + _finishHideBalloon:function () { + if (this._active) return; + this._balloon.hide(); + this._hidden = true; + this._hiding = null; + }, + + _sayWords:function (text, hold, complete) { + this._active = true; + this._hold = hold; + var words = text.split(/[^\S-]/); + var time = this.WORD_SPEAK_TIME; + var el = this._content; + var idx = 1; + + + this._addWord = $.proxy(function () { + if (!this._active) return; + if (idx > words.length) { + this._active = false; + if (!this._hold) { + complete(); + this.hide(); + } + } else { + el.text(words.slice(0, idx).join(' ')); + idx++; + this._loop = window.setTimeout($.proxy(this._addWord, this), time); + } + }, this); + + this._addWord(); + + }, + + close:function () { + if (this._active) { + this._hold = false; + } else if (this._hold) { + this._complete(); + } + }, + + pause:function () { + window.clearTimeout(this._loop); + if (this._hiding) { + window.clearTimeout(this._hiding); + this._hiding = null; + } + }, + + resume:function () { + if (this._addWord) this._addWord(); + this._hiding = window.setTimeout($.proxy(this._finishHideBalloon, this), this.CLOSE_BALLOON_DELAY); + } + + +}; + +clippy.BASE_PATH = '//s3.amazonaws.com/clippy.js/Agents/'; + +clippy.load = function (name, successCb, failCb) { + var path = clippy.BASE_PATH + name; + + var mapDfd = clippy.load._loadMap(path); + var agentDfd = clippy.load._loadAgent(name, path); + var soundsDfd = clippy.load._loadSounds(name, path); + + var data; + agentDfd.done(function (d) { + data = d; + }); + + var sounds; + + soundsDfd.done(function (d) { + sounds = d; + }); + + // wrapper to the success callback + var cb = function () { + var a = new clippy.Agent(path, data,sounds); + successCb(a); + }; + + $.when(mapDfd, agentDfd, soundsDfd).done(cb).fail(failCb); +}; + +clippy.load._maps = {}; +clippy.load._loadMap = function (path) { + var dfd = clippy.load._maps[path]; + if (dfd) return dfd; + + // set dfd if not defined + dfd = clippy.load._maps[path] = $.Deferred(); + + var src = path + '/map.png'; + var img = new Image(); + + img.onload = dfd.resolve; + img.onerror = dfd.reject; + + // start loading the map; + img.setAttribute('src', src); + + return dfd.promise(); +}; + +clippy.load._sounds = {}; + +clippy.load._loadSounds = function (name, path) { + var dfd = clippy.load._sounds[name]; + if (dfd) return dfd; + + // set dfd if not defined + dfd = clippy.load._sounds[name] = $.Deferred(); + + var audio = document.createElement('audio'); + var canPlayMp3 = !!audio.canPlayType && "" != audio.canPlayType('audio/mpeg'); + var canPlayOgg = !!audio.canPlayType && "" != audio.canPlayType('audio/ogg; codecs="vorbis"'); + + if (!canPlayMp3 && !canPlayOgg) { + dfd.resolve({}); + } else { + var src = path + (canPlayMp3 ? '/sounds-mp3.js' : '/sounds-ogg.js'); + // load + clippy.load._loadScript(src); + } + + return dfd.promise() +}; + + +clippy.load._data = {}; +clippy.load._loadAgent = function (name, path) { + var dfd = clippy.load._data[name]; + if (dfd) return dfd; + + dfd = clippy.load._getAgentDfd(name); + + var src = path + '/agent.js'; + + clippy.load._loadScript(src); + + return dfd.promise(); +}; + +clippy.load._loadScript = function (src) { + var script = document.createElement('script'); + script.setAttribute('src', src); + script.setAttribute('async', 'async'); + script.setAttribute('type', 'text/javascript'); + + document.head.appendChild(script); +}; + +clippy.load._getAgentDfd = function (name) { + var dfd = clippy.load._data[name]; + if (!dfd) { + dfd = clippy.load._data[name] = $.Deferred(); + } + return dfd; +}; + +clippy.ready = function (name, data) { + var dfd = clippy.load._getAgentDfd(name); + dfd.resolve(data); +}; + +clippy.soundsReady = function (name, data) { + var dfd = clippy.load._sounds[name]; + if (!dfd) { + dfd = clippy.load._sounds[name] = $.Deferred(); + } + + dfd.resolve(data); +}; + +/****** + * Tiny Queue + * + * @constructor + */ +clippy.Queue = function (onEmptyCallback) { + this._queue = []; + this._onEmptyCallback = onEmptyCallback; +}; + +clippy.Queue.prototype = { + /*** + * + * @param {function(Function)} func + * @returns {jQuery.Deferred} + */ + queue:function (func) { + this._queue.push(func); + + if (this._queue.length === 1 && !this._active) { + this._progressQueue(); + } + }, + + _progressQueue:function () { + + // stop if nothing left in queue + if (!this._queue.length) { + this._onEmptyCallback(); + return; + } + + var f = this._queue.shift(); + this._active = true; + + // execute function + var completeFunction = $.proxy(this.next, this); + f(completeFunction); + }, + + clear:function () { + this._queue = []; + }, + + next:function () { + this._active = false; + this._progressQueue(); + } +}; + diff --git a/public/js/handlebars.min.js b/public/js/handlebars.min.js new file mode 100644 index 0000000..4e2aa8f --- /dev/null +++ b/public/js/handlebars.min.js @@ -0,0 +1,29 @@ +/*! + + handlebars v4.0.5 + +Copyright (C) 2011-2015 by Yehuda Katz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +@license +*/ +!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=r();return a.compile=function(b,c){return k.compile(b,c,a)},a.precompile=function(b,c){return k.precompile(b,c,a)},a.AST=i["default"],a.Compiler=k.Compiler,a.JavaScriptCompiler=m["default"],a.Parser=j.parser,a.parse=j.parse,a}var e=c(1)["default"];b.__esModule=!0;var f=c(2),g=e(f),h=c(21),i=e(h),j=c(22),k=c(27),l=c(28),m=e(l),n=c(25),o=e(n),p=c(20),q=e(p),r=g["default"].create,s=d();s.create=d,q["default"](s),s.Visitor=o["default"],s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(3)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(4),h=e(g),i=c(18),j=f(i),k=c(6),l=f(k),m=c(5),n=e(m),o=c(19),p=e(o),q=c(20),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(1)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(5),g=c(6),h=e(g),i=c(7),j=c(15),k=c(17),l=e(k),m="4.0.5";b.VERSION=m;var n=7;b.COMPILER_REVISION=n;var o={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};b.REVISION_CHANGES=o;var p="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===p)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]}};var q=l["default"].log;b.log=q,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;bc;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return a||0===a?p(a)&&0===a.length?!0:!1:!0}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===n.call(a):!1};b.isArray=p},function(a,b){"use strict";function c(a,b){var e=b&&b.loc,f=void 0,g=void 0;e&&(f=e.start.line,g=e.start.column,a+=" - "+f+":"+g);for(var h=Error.prototype.constructor.call(this,a),i=0;i0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,f){j&&(j.key=b,j.index=c,j.first=0===c,j.last=!!f,k&&(j.contextPath=k+b)),i+=d(a[b],{data:j,blockParams:e.blockParams([a[b],b],[k+b,null])})}if(!b)throw new g["default"]("Must pass iterator to #each");var d=b.fn,f=b.inverse,h=0,i="",j=void 0,k=void 0;if(b.data&&b.ids&&(k=e.appendContextPath(b.data.contextPath,b.ids[0])+"."),e.isFunction(a)&&(a=a.call(this)),b.data&&(j=e.createFrame(b.data)),a&&"object"==typeof a)if(e.isArray(a))for(var l=a.length;l>h;h++)h in a&&c(h,h,h===a.length-1);else{var m=void 0;for(var n in a)a.hasOwnProperty(n)&&(void 0!==m&&c(m,h-1),m=n,h++);void 0!==m&&c(m,h-1,!0)}return 0===h&&(i=f(this)),i})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(6),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("if",function(a,b){return d.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||d.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;c>f;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=r.COMPILER_REVISION;if(b!==c){if(c>b){var d=r.REVISION_CHANGES[c],e=r.REVISION_CHANGES[b];throw new q["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new q["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=o.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=b.VM.invokePartial.call(this,c,d,e);if(null==f&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),f=e.partials[e.name](d,e)),null!=f){if(e.indent){for(var g=f.split("\n"),h=0,i=g.length;i>h&&(g[h]||h+1!==i);h++)g[h]=e.indent+g[h];f=g.join("\n")}return f}throw new q["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(e,b,e.helpers,e.partials,g,i,h)}var f=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],g=f.data;d._setup(f),!f.partial&&a.useData&&(g=j(b,g));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=f.depths?b!==f.depths[0]?[b].concat(f.depths):f.depths:[b]),(c=k(a.main,c,e,f.depths||[],g,i))(b,f)}if(!b)throw new q["default"]("No environment passed to template");if(!a||!a.main)throw new q["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e={strict:function(a,b){if(!(b in a))throw new q["default"]('"'+b+'" not defined in '+a);return a[b]},lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:o.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=o.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){c.partial?(e.helpers=c.helpers,e.partials=c.partials,e.decorators=c.decorators):(e.helpers=e.merge(c.helpers,b.helpers),a.usePartial&&(e.partials=e.merge(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(e.decorators=e.merge(c.decorators,b.decorators)))},d._child=function(b,c,d,g){if(a.useBlockParams&&!d)throw new q["default"]("must pass block params");if(a.useDepths&&!g)throw new q["default"]("must pass parent depths");return f(e,b,a[b],c,0,d,g)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return g&&b!==g[0]&&(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var d=void 0;if(c.fn&&c.fn!==i&&(c.data=r.createFrame(c.data),d=c.data["partial-block"]=c.fn,d.partials&&(c.partials=o.extend({},c.partials,d.partials))),void 0===a&&d&&(a=d),void 0===a)throw new q["default"]("The partial "+c.name+" could not be found");return a instanceof Function?a(b,c):void 0}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?r.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),o.extend(b,g)}return b}var l=c(3)["default"],m=c(1)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var n=c(5),o=l(n),p=c(6),q=m(p),r=c(4)},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b){"use strict";b.__esModule=!0;var c={helpers:{helperExpression:function(a){return"SubExpression"===a.type||("MustacheStatement"===a.type||"BlockStatement"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\.|this\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if("Program"===a.type)return a;h["default"].yy=n,n.locInfo=function(a){return new n.SourceLocation(b&&b.srcName,a)};var c=new j["default"](b);return c.accept(h["default"].parse(a))}var e=c(1)["default"],f=c(3)["default"];b.__esModule=!0,b.parse=d;var g=c(23),h=e(g),i=c(24),j=e(i),k=c(26),l=f(k),m=c(5);b.parser=h["default"];var n={};m.extend(n,l)},function(a,b){"use strict";var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:"CommentStatement",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:"PartialStatement",name:f[h-3],params:f[h-2],hash:f[h-1],indent:"",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:"SubExpression",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:"StringLiteral",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===f[h],original:"true"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[f[h]];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16], +48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:((null===n||"undefined"==typeof n)&&(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;gb[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(b.yytext=b.yytext.substr(5,b.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\"/g,'"'),80;case 32:return b.yytext=e(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b.__esModule=!0,b["default"]=c},function(a,b,c){"use strict";function d(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"ContentStatement"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"ContentStatement"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"ContentStatement"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.value!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"ContentStatement"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.value!==e,d.leftStripped}}var i=c(1)["default"];b.__esModule=!0;var j=c(25),k=i(j);d.prototype=new k["default"],d.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,i=0,j=d.length;j>i;i++){var k=d[i],l=this.accept(k);if(l){var m=e(d,i,c),n=f(d,i,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&g(d,i,!0),l.open&&h(d,i,!0),b&&q&&(g(d,i),h(d,i)&&"PartialStatement"===k.type&&(k.indent=/([ \t]+$)/.exec(d[i-1].original)[1])),b&&o&&(g((k.program||k.inverse).body),h(d,i)),b&&p&&(g(d,i),h((k.inverse||k.program).body))}}return a},d.prototype.BlockStatement=d.prototype.DecoratorBlock=d.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,i=c;if(c&&c.chained)for(d=c.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:f(b.body),closeStandalone:e((d||b).body)};if(a.openStrip.close&&g(b.body,null,!0),c){var k=a.inverseStrip;k.open&&h(b.body,null,!0),k.close&&g(d.body,null,!0),a.closeStrip.open&&h(i.body,null,!0),!this.options.ignoreStandalone&&e(b.body)&&f(d.body)&&(h(b.body),g(d.body))}else a.closeStrip.open&&h(b.body,null,!0);return j},d.prototype.Decorator=d.prototype.MustacheStatement=function(a){return a.strip},d.prototype.PartialStatement=d.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(){this.parents=[]}function e(a){this.acceptRequired(a,"path"),this.acceptArray(a.params),this.acceptKey(a,"hash")}function f(a){e.call(this,a),this.acceptKey(a,"program"),this.acceptKey(a,"inverse")}function g(a){this.acceptRequired(a,"name"),this.acceptArray(a.params),this.acceptKey(a,"hash")}var h=c(1)["default"];b.__esModule=!0;var i=c(6),j=h(i);d.prototype={constructor:d,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!d.prototype[c.type])throw new j["default"]('Unexpected node type "'+c.type+'" found when accepting '+b+" on "+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new j["default"](a.type+" requires "+b)},acceptArray:function(a){for(var b=0,c=a.length;c>b;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new j["default"]("Unknown type: "+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:e,Decorator:e,BlockStatement:f,DecoratorBlock:f,PartialStatement:g,PartialBlockStatement:function(a){g.call(this,a),this.acceptKey(a,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:e,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,"value")}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new q["default"](a.path.original+" doesn't match "+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\[.*\]$/.test(a)?a.substr(1,a.length-2):a}function g(a,b){return{open:"~"===a.charAt(2),close:"~"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function i(a,b,c){c=this.locInfo(c);for(var d=a?"@":"",e=[],f=0,g="",h=0,i=b.length;i>h;h++){var j=b[h].part,k=b[h].original!==j;if(d+=(b[h].separator||"")+j,k||".."!==j&&"."!==j&&"this"!==j)e.push(j);else{if(e.length>0)throw new q["default"]("Invalid path: "+d,{loc:c});".."===j&&(f++,g+="../")}}return{type:"PathExpression",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h="{"!==g&&"&"!==g,i=/\*/.test(d);return{type:i?"Decorator":"MustacheStatement",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:"Program",body:b,strip:{},loc:e};return{type:"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new q["default"]("Unexpected inverse block on decorator",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?"DecoratorBlock":"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:"Program",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:"PartialBlockStatement",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}var o=c(1)["default"];b.__esModule=!0,b.SourceLocation=e,b.id=f,b.stripFlags=g,b.stripComment=h,b.preparePath=i,b.prepareMustache=j,b.prepareRawBlock=k,b.prepareBlock=l,b.prepareProgram=m,b.preparePartialBlock=n;var p=c(6),q=o(p)},function(a,b,c){"use strict";function d(){}function e(a,b,c){if(null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function f(a,b,c){function d(){var d=c.parse(a,b),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}function e(a,b){return f||(f=d()),f.call(this,a,b)}if(void 0===b&&(b={}),null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var f=void 0;return e._setup=function(a){return f||(f=d()),f._setup(a)},e._child=function(a,b,c,e){return f||(f=d()),f._child(a,b,c,e)},e}function g(a,b){if(a===b)return!0;if(l.isArray(a)&&l.isArray(b)&&a.length===b.length){for(var c=0;cc;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!g(d.args,e.args))return!1}b=this.children.length;for(var c=0;b>c;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[];var c=b.knownHelpers;if(b.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)d in c&&(b.knownHelpers[d]=c[d]);return this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new k["default"]("Unknown type: "+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;c>d;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){h(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);"helper"===d?this.helperSexpr(a,b,c):"simple"===d?(this.simpleSexpr(a),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("blockValue",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode("registerDecorator",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new k["default"]("Unsupported number of partial arguments: "+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):c.push({type:"PathExpression",parts:[],depth:0}));var d=a.name.original,e="SubExpression"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||"";this.options.preventIndent&&f&&(this.opcode("appendContent",f),f=""),this.opcode("invokePartial",e,d,f),this.opcode("append")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode("appendContent",a.value)},CommentStatement:function(){},SubExpression:function(a){h(a);var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),d.strict=!0,this.accept(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new k["default"]("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode("invokeHelper",d.length,e.original,n["default"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0],c=n["default"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode("lookupBlockParam",d,a.parts):b?a.data?(this.options.data=!0,this.opcode("lookupData",a.depth,a.parts,a.strict)):this.opcode("lookupOnContext",a.parts,a.falsy,a.strict,c):this.opcode("pushContext")},StringLiteral:function(a){this.opcode("pushString",a.value)},NumberLiteral:function(a){this.opcode("pushLiteral",a.value)},BooleanLiteral:function(a){this.opcode("pushLiteral",a.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode("pushHash");d>c;c++)this.pushParam(b[c].value);for(;c--;)this.opcode("assignToHash",b[c].key);this.opcode("popHash")},opcode:function(a){this.opcodes.push({opcode:a,args:o.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=n["default"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&n["default"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?"helper":e?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;c>b;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||"";if(this.stringParams)b.replace&&(b=b.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",b,a.type),"SubExpression"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||n["default"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(".");this.opcode("pushId","BlockParam",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.accept(a.hash):this.opcode("emptyHash",d),e},blockParamIndex:function(a){for(var b=0,c=this.options.blockParams.length;c>b;b++){var d=this.options.blockParams[b],e=d&&l.indexOf(d,a);if(d&&e>=0)return[b,e]}}}},function(a,b,c){"use strict";function d(a){this.value=a}function e(){}function f(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;g>f;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable("container.strict"),"(",e,", ",b.quotedString(c[f]),")"]:e}var g=c(1)["default"];b.__esModule=!0;var h=c(4),i=c(6),j=g(i),k=c(5),l=c(29),m=g(l);e.prototype={nameLookup:function(a,b){return e.isValidJavaScriptVariableName(b)?[a,".",b]:[a,"[",JSON.stringify(b),"]"]},depthedLookup:function(a){return[this.aliasable("container.lookup"),'(depths, "',a,'")']},compilerInfo:function(){var a=h.COMPILER_REVISION,b=h.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return k.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?["return ",a,";"]:c?["buffer += ",a,";"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString("")},compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;i>h;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new j["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),d?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var k=this.createFunctionContext(d);if(this.isChild)return k;var l={compiler:this.compilerInfo(),main:k};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;i>h;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+"_d"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new m["default"](this.options.srcName),this.decorators=new m["default"](this.options.srcName)},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));var d=0;for(var e in this.aliases){var f=this.aliases[e];this.aliases.hasOwnProperty(e)&&f.children&&f.referenceCount>1&&(b+=", alias"+ ++d+"="+e,f.children[0]="alias"+d)}var g=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&g.push("blockParams"),this.useDepths&&g.push("depths");var h=this.mergeSource(b);return a?(g.push(h),Function.apply(this,g)):this.source.wrap(["function(",g.join(","),") {\n ",h,"}"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(" + "):f=a,g=a):(f&&(e?f.prepend("buffer += "):d=!0,g.add(";"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend("return "),g.add(";")):e||this.source.push('return "";'):(a+=", buffer = "+(d?"":this.initializeBuffer()),f?(f.prepend("return buffer + "),g.add(";")):this.source.push("return buffer;")),a&&this.source.prepend("var "+a.substring(2)+(d?"":";\n")),this.source.merge()},blockValue:function(a){var b=this.aliasable("helpers.blockHelperMissing"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,"call",c))},ambiguousBlockValue:function(){var a=this.aliasable("helpers.blockHelperMissing"),b=[this.contextName(0)];this.setupHelperArgs("",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource(["if (!",this.lastHelper,") { ",c," = ",this.source.functionCall(a,"call",b),"}"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource(["if (",a," != null) { ",this.appendToBuffer(a,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath("context",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push(["blockParams[",a[0],"][",a[1],"]"]),this.resolvePath("context",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral("container.data(data, "+a+")"):this.pushStackLiteral("data"),this.resolvePath("data",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var g=this;if(this.options.strict||this.options.assumeObjects)return void this.push(f(this.options.strict&&e,this,b,a));for(var h=b.length;h>c;c++)this.replaceStack(function(e){var f=g.nameLookup(e,b[c],a);return d?[" && ",f]:[" != null ? ",f," : ",e]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"SubExpression"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(a?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup("decorators",b,"decorator"),d=this.setupHelperArgs(b,a);this.decorators.push(["fn = ",this.decorators.functionCall(c,"",["fn","props","container",d])," || fn;"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=c?[e.name," || "]:"",g=["("].concat(f,d);this.options.strict||g.push(" || ",this.aliasable("helpers.helperMissing")),g.push(")"),this.push(this.source.functionCall(g,"call",e.callParams))},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,"call",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper"),f=["(","(helper = ",e," || ",c,")"];this.options.strict||(f[0]="(helper = ",f.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",f,d.paramsInit?["),(",d.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",d.callParams)," : helper))"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers="helpers",e.partials="partials",e.decorators="container.decorators",a?d.unshift(b):d.unshift(this.nameLookup("partials",b,"partial")),this.options.compat&&(e.depths="depths"),e=this.objectLiteral(e), +d.push(e),this.push(this.source.functionCall("container.invokePartial","",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){"BlockParam"===a?this.pushStackLiteral("blockParams["+b[0]+"].path["+b[1]+"]"+(c?" + "+JSON.stringify("."+c):"")):"PathExpression"===a?this.pushString(b):"SubExpression"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:e,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;g>f;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);null==h?(this.context.programs.push(""),h=this.context.programs.length,d.index=h,d.name="program"+h,this.context.programs[h]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[h]=e.decorators,this.context.environments[h]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams):(d.index=h,d.name="program"+h,this.useDepths=this.useDepths||d.useDepths,this.useBlockParams=this.useBlockParams||d.useBlockParams)}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;c>b;b++){var d=this.context.environments[b];if(d&&d.equals(a))return b}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,"data",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push("blockParams"),this.useDepths&&c.push("depths"),"container.program("+c.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof d||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new d(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=["("],c=void 0,e=void 0,f=void 0;if(!this.isInline())throw new j["default"]("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof d)c=[g.value],b=["(",c],f=!0;else{e=!0;var h=this.incrStack();b=["((",this.push(h)," = ",g,")"],c=this.topStack()}var i=a.call(this,c);f||this.popStack(),e&&this.stackSlot--,this.push(b.concat(i,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;c>b;b++){var e=a[b];if(e instanceof d)this.compileStack.push(e);else{var f=this.incrStack();this.pushSource([f," = ",e,";"]),this.compileStack.push(f)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof d)return c.value;if(!b){if(!this.stackSlot)throw new j["default"]("Invalid stack pop");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof d?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup("helpers",b,"helper"),g=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||"container.noop",d.inverse=j||"container.noop");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data="data"),this.useBlockParams&&(d.blockParams="blockParams"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e=this.objectLiteral(e),d?(this.useRegister("options"),c.push("options"),["options=",e]):c?(c.push(e),""):e}},function(){for(var a="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),b=e.RESERVED_WORDS={},c=0,d=a.length;d>c;c++)b[a[c]]=!0}(),e.isValidJavaScriptVariableName=function(a){return!e.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b,c){if(f.isArray(a)){for(var d=[],e=0,g=a.length;g>e;e++)d.push(b.wrap(a[e],c));return d}return"boolean"==typeof a||"number"==typeof a?a+"":a}function e(a){this.srcFile=a,this.source=[]}b.__esModule=!0;var f=c(5),g=void 0;try{}catch(h){}g||(g=function(a,b,c,d){this.src="",d&&this.add(d)},g.prototype={add:function(a){f.isArray(a)&&(a=a.join("")),this.src+=a},prepend:function(a){f.isArray(a)&&(a=a.join("")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([" ",b,"\n"])}),a},each:function(a){for(var b=0,c=this.source.length;c>b;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new g(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof g?a:(a=d(a,this,b),new g(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?"."+b+"(":"(",c,")"])},quotedString:function(a){return'"'+(a+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)if(a.hasOwnProperty(c)){var e=d(a[c],this);"undefined"!==e&&b.push([this.quotedString(c),":",e])}var f=this.generateList(b);return f.prepend("{"),f.add("}"),f},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;e>c;c++)c&&b.add(","),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend("["),b.add("]"),b}},b["default"]=e,a.exports=b["default"]}])}); \ No newline at end of file diff --git a/public/js/imagesloaded.pkgd.min.js b/public/js/imagesloaded.pkgd.min.js new file mode 100644 index 0000000..c484256 --- /dev/null +++ b/public/js/imagesloaded.pkgd.min.js @@ -0,0 +1,7 @@ +/*! + * imagesLoaded PACKAGED v4.0.0 + * JavaScript is all like "You images are done yet or what?" + * MIT License + */ + +(function(){"use strict";function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,s=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if(e instanceof RegExp){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;th;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(window),function(){"use strict";function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;be;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a,b){function c(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function d(){}function e(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=h.length;c>b;b++){var d=h[b];a[d]=0}return a}function f(b){function d(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||g("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=b("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var f=document.body||document.documentElement;f.appendChild(e);var h=j(e);l=200===c(h.width),f.removeChild(e)}}}function f(a){if(d(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var b=j(a);if("none"===b.display)return e();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var g=f.isBorderBox=!(!k||!b[k]||"border-box"!==b[k]),m=0,n=h.length;n>m;m++){var o=h[m],p=b[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=g&&l,y=c(b.width);y!==!1&&(f.width=y+(x?0:r+v));var z=c(b.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}var j,k,l,m=!1;return f}var g="undefined"==typeof console?d:function(a){console.error(a)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],f):"object"==typeof exports?module.exports=f(require("desandro-get-style-property")):a.getSize=f(a.getStyleProperty)}(window),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(a){"use strict";function b(a,b){return a[g](b)}function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}function e(a,d){return c(a),b(a,d)}var f,g=function(){if(a.matches)return"matches";if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a,b){"use strict";"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["doc-ready/doc-ready","matches-selector/matches-selector"],function(c,d){return b(a,c,d)}):"object"==typeof exports?module.exports=b(a,require("doc-ready"),require("desandro-matches-selector")):a.fizzyUIUtils=b(a,a.docReady,a.matchesSelector)}(window,function(a,b,c){var d={};d.extend=function(a,b){for(var c in b)a[c]=b[c];return a},d.modulo=function(a,b){return(a%b+b)%b};var e=Object.prototype.toString;d.isArray=function(a){return"[object Array]"==e.call(a)},d.makeArray=function(a){var b=[];if(d.isArray(a))b=a;else if(a&&"number"==typeof a.length)for(var c=0,e=a.length;e>c;c++)b.push(a[c]);else b.push(a);return b},d.indexOf=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},d.removeFrom=function(a,b){var c=d.indexOf(a,b);-1!=c&&a.splice(c,1)},d.isElement="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1==a.nodeType&&"string"==typeof a.nodeName},d.setText=function(){function a(a,c){b=b||(void 0!==document.documentElement.textContent?"textContent":"innerText"),a[b]=c}var b;return a}(),d.getParent=function(a,b){for(;a!=document.body;)if(a=a.parentNode,c(a,b))return a},d.getQueryElement=function(a){return"string"==typeof a?document.querySelector(a):a},d.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},d.filterFindElements=function(a,b){a=d.makeArray(a);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f];if(d.isElement(h))if(b){c(h,b)&&e.push(h);for(var i=h.querySelectorAll(b),j=0,k=i.length;k>j;j++)e.push(i[j])}else e.push(h)}return e},d.debounceMethod=function(a,b,c){var d=a.prototype[b],e=b+"Timeout";a.prototype[b]=function(){var a=this[e];a&&clearTimeout(a);var b=arguments,f=this;this[e]=setTimeout(function(){d.apply(f,b),delete f[e]},c||100)}},d.toDashed=function(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()};var f=a.console;return d.htmlInit=function(c,e){b(function(){for(var b=d.toDashed(e),g=document.querySelectorAll(".js-"+b),h="data-"+b+"-options",i=0,j=g.length;j>i;i++){var k,l=g[i],m=l.getAttribute(h);try{k=m&&JSON.parse(m)}catch(n){f&&f.error("Error parsing "+h+" on "+l.nodeName.toLowerCase()+(l.id?"#"+l.id:"")+": "+n);continue}var o=new c(l,k),p=a.jQuery;p&&p.data(l,e,o)}})},d}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property","fizzy-ui-utils/utils"],function(c,d,e,f){return b(a,c,d,e,f)}):"object"==typeof exports?module.exports=b(a,require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property"),require("fizzy-ui-utils")):(a.Outlayer={},a.Outlayer.Item=b(a,a.EventEmitter,a.getSize,a.getStyleProperty,a.fizzyUIUtils))}(window,function(a,b,c,d,e){"use strict";function f(a){for(var b in a)return!1;return b=null,!0}function g(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}function h(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}var i=a.getComputedStyle,j=i?function(a){return i(a,null)}:function(a){return a.currentStyle},k=d("transition"),l=d("transform"),m=k&&l,n=!!d("perspective"),o={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[k],p=["transform","transition","transitionDuration","transitionProperty"],q=function(){for(var a={},b=0,c=p.length;c>b;b++){var e=p[b],f=d(e);f&&f!==e&&(a[e]=f)}return a}();e.extend(g.prototype,b.prototype),g.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.getSize=function(){this.size=c(this.element)},g.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=q[c]||c;b[d]=a[c]}},g.prototype.getPosition=function(){var a=j(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=a[c?"left":"right"],f=a[d?"top":"bottom"],g=this.layout.size,h=-1!=e.indexOf("%")?parseFloat(e)/100*g.width:parseInt(e,10),i=-1!=f.indexOf("%")?parseFloat(f)/100*g.height:parseInt(f,10);h=isNaN(h)?0:h,i=isNaN(i)?0:i,h-=c?g.paddingLeft:g.paddingRight,i-=d?g.paddingTop:g.paddingBottom,this.position.x=h,this.position.y=i},g.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={},d=b.isOriginLeft?"paddingLeft":"paddingRight",e=b.isOriginLeft?"left":"right",f=b.isOriginLeft?"right":"left",g=this.position.x+a[d];c[e]=this.getXValue(g),c[f]="";var h=b.isOriginTop?"paddingTop":"paddingBottom",i=b.isOriginTop?"top":"bottom",j=b.isOriginTop?"bottom":"top",k=this.position.y+a[h];c[i]=this.getYValue(k),c[j]="",this.css(c),this.emitEvent("layout",[this])},g.prototype.getXValue=function(a){var b=this.layout.options;return b.percentPosition&&!b.isHorizontal?a/this.layout.size.width*100+"%":a+"px"},g.prototype.getYValue=function(a){var b=this.layout.options;return b.percentPosition&&b.isHorizontal?a/this.layout.size.height*100+"%":a+"px"},g.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={};j.transform=this.getTranslate(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},g.prototype.getTranslate=function(a,b){var c=this.layout.options;return a=c.isOriginLeft?a:-a,b=c.isOriginTop?b:-b,n?"translate3d("+a+"px, "+b+"px, 0)":"translate("+a+"px, "+b+"px)"},g.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},g.prototype.moveTo=m?g.prototype._transitionTo:g.prototype.goTo,g.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},g.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},g.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var r="opacity,"+h(q.transform||"transform");g.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:r,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(o,this,!1))},g.prototype.transition=g.prototype[k?"_transition":"_nonTransition"],g.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},g.prototype.onotransitionend=function(a){this.ontransitionend(a)};var s={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};g.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,c=s[a.propertyName]||a.propertyName;if(delete b.ingProperties[c],f(b.ingProperties)&&this.disableTransition(),c in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[c]),c in b.onEnd){var d=b.onEnd[c];d.call(this),delete b.onEnd[c]}this.emitEvent("transitionEnd",[this])}},g.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(o,this,!1),this.isTransitioning=!1},g.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var t={transitionProperty:"",transitionDuration:""};return g.prototype.removeTransitionStyles=function(){this.css(t)},g.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},g.prototype.remove=function(){if(!k||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.once("transitionEnd",function(){a.removeElem()}),this.hide()},g.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("visibleStyle");b[c]=this.onRevealTransitionEnd,this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},g.prototype.getHideRevealTransitionEndProperty=function(a){var b=this.layout.options[a];if(b.opacity)return"opacity";for(var c in b)return c},g.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("hiddenStyle");b[c]=this.onHideTransitionEnd,this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},g.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},g}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","eventEmitter/EventEmitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(c,d,e,f,g){return b(a,c,d,e,f,g)}):"object"==typeof exports?module.exports=b(a,require("eventie"),require("wolfy87-eventemitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):a.Outlayer=b(a,a.eventie,a.EventEmitter,a.getSize,a.fizzyUIUtils,a.Outlayer.Item)}(window,function(a,b,c,d,e,f){"use strict";function g(a,b){var c=e.getQueryElement(a);if(!c)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(c||a)));this.element=c,i&&(this.$element=i(this.element)),this.options=e.extend({},this.constructor.defaults),this.option(b);var d=++k;this.element.outlayerGUID=d,l[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var h=a.console,i=a.jQuery,j=function(){},k=0,l={};return g.namespace="outlayer",g.Item=f,g.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},e.extend(g.prototype,c.prototype),g.prototype.option=function(a){e.extend(this.options,a)},g.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),e.extend(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},g.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},g.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},g.prototype._filterFindItemElements=function(a){return e.filterFindElements(a,this.options.itemSelector)},g.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},g.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},g.prototype._init=g.prototype.layout,g.prototype._resetLayout=function(){this.getSize()},g.prototype.getSize=function(){this.size=d(this.element)},g.prototype._getMeasurement=function(a,b){var c,f=this.options[a];f?("string"==typeof f?c=this.element.querySelector(f):e.isElement(f)&&(c=f),this[a]=c?d(c)[b]:f):this[a]=0},g.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},g.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},g.prototype._layoutItems=function(a,b){if(this._emitCompleteOnItems("layout",a),a&&a.length){for(var c=[],d=0,e=a.length;e>d;d++){var f=a[d],g=this._getItemLayoutPosition(f);g.item=f,g.isInstant=b||f.isLayoutInstant,c.push(g)}this._processLayoutQueue(c)}},g.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},g.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},g.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},g.prototype._postLayout=function(){this.resizeContainer()},g.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},g.prototype._getContainerSize=j,g.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},g.prototype._emitCompleteOnItems=function(a,b){function c(){e.dispatchEvent(a+"Complete",null,[b])}function d(){g++,g===f&&c()}var e=this,f=b.length;if(!b||!f)return void c();for(var g=0,h=0,i=b.length;i>h;h++){var j=b[h];j.once(a,d)}},g.prototype.dispatchEvent=function(a,b,c){var d=b?[b].concat(c):c;if(this.emitEvent(a,d),i)if(this.$element=this.$element||i(this.element),b){var e=i.Event(b);e.type=a,this.$element.trigger(e,c)}else this.$element.trigger(a,c)},g.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},g.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},g.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},g.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e.removeFrom(this.stamps,d),this.unignore(d)}},g.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=e.makeArray(a)):void 0},g.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},g.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},g.prototype._manageStamp=j,g.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,e=d(a),f={left:b.left-c.left-e.marginLeft,top:b.top-c.top-e.marginTop,right:c.right-b.right-e.marginRight,bottom:c.bottom-b.bottom-e.marginBottom};return f},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.bindResize=function(){this.isResizeBound||(b.bind(a,"resize",this),this.isResizeBound=!0)},g.prototype.unbindResize=function(){this.isResizeBound&&b.unbind(a,"resize",this),this.isResizeBound=!1},g.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},g.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},g.prototype.needsResizeLayout=function(){var a=d(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},g.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},g.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},g.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},g.prototype.reveal=function(a){this._emitCompleteOnItems("reveal",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.reveal()}},g.prototype.hide=function(a){this._emitCompleteOnItems("hide",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.hide()}},g.prototype.revealItemElements=function(a){var b=this.getItems(a);this.reveal(b)},g.prototype.hideItemElements=function(a){var b=this.getItems(a);this.hide(b)},g.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},g.prototype.getItems=function(a){a=e.makeArray(a);for(var b=[],c=0,d=a.length;d>c;c++){var f=a[c],g=this.getItem(f);g&&b.push(g)}return b},g.prototype.remove=function(a){var b=this.getItems(a);if(this._emitCompleteOnItems("remove",b),b&&b.length)for(var c=0,d=b.length;d>c;c++){var f=b[c];f.remove(),e.removeFrom(this.items,f)}},g.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize();var e=this.element.outlayerGUID;delete l[e],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},g.data=function(a){a=e.getQueryElement(a);var b=a&&a.outlayerGUID;return b&&l[b]},g.create=function(a,b){function c(){g.apply(this,arguments)}return Object.create?c.prototype=Object.create(g.prototype):e.extend(c.prototype,g.prototype),c.prototype.constructor=c,c.defaults=e.extend({},g.defaults),e.extend(c.defaults,b),c.prototype.settings={},c.namespace=a,c.data=g.data,c.Item=function(){f.apply(this,arguments)},c.Item.prototype=new f,e.htmlInit(c,a),i&&i.bridget&&i.bridget(a,c),c},g.Item=f,g}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/item",["outlayer/outlayer"],b):"object"==typeof exports?module.exports=b(require("outlayer")):(a.Isotope=a.Isotope||{},a.Isotope.Item=b(a.Outlayer))}(window,function(a){"use strict";function b(){a.Item.apply(this,arguments)}b.prototype=new a.Item,b.prototype._create=function(){this.id=this.layout.itemGUID++,a.Item.prototype._create.call(this),this.sortData={}},b.prototype.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var a=this.layout.options.getSortData,b=this.layout._sorters;for(var c in a){var d=b[c];this.sortData[c]=d(this.element,this)}}};var c=b.prototype.destroy;return b.prototype.destroy=function(){c.apply(this,arguments),this.css({display:""})},b}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-mode",["get-size/get-size","outlayer/outlayer"],b):"object"==typeof exports?module.exports=b(require("get-size"),require("outlayer")):(a.Isotope=a.Isotope||{},a.Isotope.LayoutMode=b(a.getSize,a.Outlayer))}(window,function(a,b){"use strict";function c(a){this.isotope=a,a&&(this.options=a.options[this.namespace],this.element=a.element,this.items=a.filteredItems,this.size=a.size)}return function(){function a(a){return function(){return b.prototype[a].apply(this.isotope,arguments)}}for(var d=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout"],e=0,f=d.length;f>e;e++){var g=d[e];c.prototype[g]=a(g)}}(),c.prototype.needsVerticalResizeLayout=function(){var b=a(this.isotope.element),c=this.isotope.size&&b;return c&&b.innerHeight!=this.isotope.size.innerHeight},c.prototype._getMeasurement=function(){this.isotope._getMeasurement.apply(this,arguments)},c.prototype.getColumnWidth=function(){this.getSegmentSize("column","Width")},c.prototype.getRowHeight=function(){this.getSegmentSize("row","Height")},c.prototype.getSegmentSize=function(a,b){var c=a+b,d="outer"+b;if(this._getMeasurement(c,d),!this[c]){var e=this.getFirstItemSize();this[c]=e&&e[d]||this.isotope.size["inner"+b]}},c.prototype.getFirstItemSize=function(){var b=this.isotope.filteredItems[0];return b&&b.element&&a(b.element)},c.prototype.layout=function(){this.isotope.layout.apply(this.isotope,arguments)},c.prototype.getSize=function(){this.isotope.getSize(),this.size=this.isotope.size},c.modes={},c.create=function(a,b){function d(){c.apply(this,arguments)}return d.prototype=new c,b&&(d.options=b),d.prototype.namespace=a,c.modes[a]=d,d},c}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("masonry/masonry",["outlayer/outlayer","get-size/get-size","fizzy-ui-utils/utils"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size"),require("fizzy-ui-utils")):a.Masonry=b(a.Outlayer,a.getSize,a.fizzyUIUtils)}(window,function(a,b,c){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}var d=this.columnWidth+=this.gutter,e=this.containerWidth+this.gutter,f=e/d,g=d-e%d,h=g&&1>g?"round":"floor";f=Math[h](f),this.cols=Math.max(f,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c.indexOf(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-modes/masonry",["../layout-mode","masonry/masonry"],b):"object"==typeof exports?module.exports=b(require("../layout-mode"),require("masonry-layout")):b(a.Isotope.LayoutMode,a.Masonry)}(window,function(a,b){"use strict";function c(a,b){for(var c in b)a[c]=b[c];return a}var d=a.create("masonry"),e=d.prototype._getElementOffset,f=d.prototype.layout,g=d.prototype._getMeasurement; +c(d.prototype,b.prototype),d.prototype._getElementOffset=e,d.prototype.layout=f,d.prototype._getMeasurement=g;var h=d.prototype.measureColumns;d.prototype.measureColumns=function(){this.items=this.isotope.filteredItems,h.call(this)};var i=d.prototype._manageStamp;return d.prototype._manageStamp=function(){this.options.isOriginLeft=this.isotope.options.isOriginLeft,this.options.isOriginTop=this.isotope.options.isOriginTop,i.apply(this,arguments)},d}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-modes/fit-rows",["../layout-mode"],b):"object"==typeof exports?module.exports=b(require("../layout-mode")):b(a.Isotope.LayoutMode)}(window,function(a){"use strict";var b=a.create("fitRows");return b.prototype._resetLayout=function(){this.x=0,this.y=0,this.maxY=0,this._getMeasurement("gutter","outerWidth")},b.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth+this.gutter,c=this.isotope.size.innerWidth+this.gutter;0!==this.x&&b+this.x>c&&(this.x=0,this.y=this.maxY);var d={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+a.size.outerHeight),this.x+=b,d},b.prototype._getContainerSize=function(){return{height:this.maxY}},b}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-modes/vertical",["../layout-mode"],b):"object"==typeof exports?module.exports=b(require("../layout-mode")):b(a.Isotope.LayoutMode)}(window,function(a){"use strict";var b=a.create("vertical",{horizontalAlignment:0});return b.prototype._resetLayout=function(){this.y=0},b.prototype._getItemLayoutPosition=function(a){a.getSize();var b=(this.isotope.size.innerWidth-a.size.outerWidth)*this.options.horizontalAlignment,c=this.y;return this.y+=a.size.outerHeight,{x:b,y:c}},b.prototype._getContainerSize=function(){return{height:this.y}},b}),function(a,b){"use strict";"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","matches-selector/matches-selector","fizzy-ui-utils/utils","isotope/js/item","isotope/js/layout-mode","isotope/js/layout-modes/masonry","isotope/js/layout-modes/fit-rows","isotope/js/layout-modes/vertical"],function(c,d,e,f,g,h){return b(a,c,d,e,f,g,h)}):"object"==typeof exports?module.exports=b(a,require("outlayer"),require("get-size"),require("desandro-matches-selector"),require("fizzy-ui-utils"),require("./item"),require("./layout-mode"),require("./layout-modes/masonry"),require("./layout-modes/fit-rows"),require("./layout-modes/vertical")):a.Isotope=b(a,a.Outlayer,a.getSize,a.matchesSelector,a.fizzyUIUtils,a.Isotope.Item,a.Isotope.LayoutMode)}(window,function(a,b,c,d,e,f,g){function h(a,b){return function(c,d){for(var e=0,f=a.length;f>e;e++){var g=a[e],h=c.sortData[g],i=d.sortData[g];if(h>i||i>h){var j=void 0!==b[g]?b[g]:b,k=j?1:-1;return(h>i?1:-1)*k}}return 0}}var i=a.jQuery,j=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^\s+|\s+$/g,"")},k=document.documentElement,l=k.textContent?function(a){return a.textContent}:function(a){return a.innerText},m=b.create("isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});m.Item=f,m.LayoutMode=g,m.prototype._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),b.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var a in g.modes)this._initLayoutMode(a)},m.prototype.reloadItems=function(){this.itemGUID=0,b.prototype.reloadItems.call(this)},m.prototype._itemize=function(){for(var a=b.prototype._itemize.apply(this,arguments),c=0,d=a.length;d>c;c++){var e=a[c];e.id=this.itemGUID++}return this._updateItemsSortData(a),a},m.prototype._initLayoutMode=function(a){var b=g.modes[a],c=this.options[a]||{};this.options[a]=b.options?e.extend(b.options,c):c,this.modes[a]=new b(this)},m.prototype.layout=function(){return!this._isLayoutInited&&this.options.isInitLayout?void this.arrange():void this._layout()},m.prototype._layout=function(){var a=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,a),this._isLayoutInited=!0},m.prototype.arrange=function(a){function b(){d.reveal(c.needReveal),d.hide(c.needHide)}this.option(a),this._getIsInstant();var c=this._filter(this.items);this.filteredItems=c.matches;var d=this;this._bindArrangeComplete(),this._isInstant?this._noTransition(b):b(),this._sort(),this._layout()},m.prototype._init=m.prototype.arrange,m.prototype._getIsInstant=function(){var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;return this._isInstant=a,a},m.prototype._bindArrangeComplete=function(){function a(){b&&c&&d&&e.dispatchEvent("arrangeComplete",null,[e.filteredItems])}var b,c,d,e=this;this.once("layoutComplete",function(){b=!0,a()}),this.once("hideComplete",function(){c=!0,a()}),this.once("revealComplete",function(){d=!0,a()})},m.prototype._filter=function(a){var b=this.options.filter;b=b||"*";for(var c=[],d=[],e=[],f=this._getFilterTest(b),g=0,h=a.length;h>g;g++){var i=a[g];if(!i.isIgnored){var j=f(i);j&&c.push(i),j&&i.isHidden?d.push(i):j||i.isHidden||e.push(i)}}return{matches:c,needReveal:d,needHide:e}},m.prototype._getFilterTest=function(a){return i&&this.options.isJQueryFiltering?function(b){return i(b.element).is(a)}:"function"==typeof a?function(b){return a(b.element)}:function(b){return d(b.element,a)}},m.prototype.updateSortData=function(a){var b;a?(a=e.makeArray(a),b=this.getItems(a)):b=this.items,this._getSorters(),this._updateItemsSortData(b)},m.prototype._getSorters=function(){var a=this.options.getSortData;for(var b in a){var c=a[b];this._sorters[b]=n(c)}},m.prototype._updateItemsSortData=function(a){for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.updateSortData()}};var n=function(){function a(a){if("string"!=typeof a)return a;var c=j(a).split(" "),d=c[0],e=d.match(/^\[(.+)\]$/),f=e&&e[1],g=b(f,d),h=m.sortDataParsers[c[1]];return a=h?function(a){return a&&h(g(a))}:function(a){return a&&g(a)}}function b(a,b){var c;return c=a?function(b){return b.getAttribute(a)}:function(a){var c=a.querySelector(b);return c&&l(c)}}return a}();m.sortDataParsers={parseInt:function(a){return parseInt(a,10)},parseFloat:function(a){return parseFloat(a)}},m.prototype._sort=function(){var a=this.options.sortBy;if(a){var b=[].concat.apply(a,this.sortHistory),c=h(b,this.options.sortAscending);this.filteredItems.sort(c),a!=this.sortHistory[0]&&this.sortHistory.unshift(a)}},m.prototype._mode=function(){var a=this.options.layoutMode,b=this.modes[a];if(!b)throw new Error("No layout mode: "+a);return b.options=this.options[a],b},m.prototype._resetLayout=function(){b.prototype._resetLayout.call(this),this._mode()._resetLayout()},m.prototype._getItemLayoutPosition=function(a){return this._mode()._getItemLayoutPosition(a)},m.prototype._manageStamp=function(a){this._mode()._manageStamp(a)},m.prototype._getContainerSize=function(){return this._mode()._getContainerSize()},m.prototype.needsResizeLayout=function(){return this._mode().needsResizeLayout()},m.prototype.appended=function(a){var b=this.addItems(a);if(b.length){var c=this._filterRevealAdded(b);this.filteredItems=this.filteredItems.concat(c)}},m.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){this._resetLayout(),this._manageStamps();var c=this._filterRevealAdded(b);this.layoutItems(this.filteredItems),this.filteredItems=c.concat(this.filteredItems),this.items=b.concat(this.items)}},m.prototype._filterRevealAdded=function(a){var b=this._filter(a);return this.hide(b.needHide),this.reveal(b.matches),this.layoutItems(b.matches,!0),b.matches},m.prototype.insert=function(a){var b=this.addItems(a);if(b.length){var c,d,e=b.length;for(c=0;e>c;c++)d=b[c],this.element.appendChild(d.element);var f=this._filter(b).matches;for(c=0;e>c;c++)b[c].isLayoutInstant=!0;for(this.arrange(),c=0;e>c;c++)delete b[c].isLayoutInstant;this.reveal(f)}};var o=m.prototype.remove;return m.prototype.remove=function(a){a=e.makeArray(a);var b=this.getItems(a);o.call(this,a);var c=b&&b.length;if(c)for(var d=0;c>d;d++){var f=b[d];e.removeFrom(this.filteredItems,f)}},m.prototype.shuffle=function(){for(var a=0,b=this.items.length;b>a;a++){var c=this.items[a];c.sortData.random=Math.random()}this.options.sortBy="random",this._sort(),this._layout()},m.prototype._noTransition=function(a){var b=this.options.transitionDuration;this.options.transitionDuration=0;var c=a.call(this);return this.options.transitionDuration=b,c},m.prototype.getFilteredItemElements=function(){for(var a=[],b=0,c=this.filteredItems.length;c>b;b++)a.push(this.filteredItems[b].element);return a},m}); \ No newline at end of file diff --git a/public/js/jquery-1.7.js b/public/js/jquery-1.7.js new file mode 100644 index 0000000..eda55db --- /dev/null +++ b/public/js/jquery-1.7.js @@ -0,0 +1,9300 @@ +/*! + * jQuery JavaScript Library v1.7 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 3 16:18:21 2011 -0400 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Check for digits + rdigit = /\d/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return obj != null && rdigit.test( obj ) && !isNaN( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw msg; + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +// Expose jQuery as an AMD module, but only for AMD loaders that +// understand the issues with loading multiple versions of jQuery +// in a page that all might call define(). The loader will indicate +// they have special allowances for multiple jQuery versions by +// specifying define.amd.jQuery = true. Register as a named module, +// since jQuery can be concatenated with other files that may use define, +// but not use a proper concatenation script that understands anonymous +// AMD modules. A named AMD is safest and most robust way to register. +// Lowercase jquery is used because AMD module names are derived from +// file names, and jQuery is normally delivered in a lowercase file name. +if ( typeof define === "function" && define.amd && define.amd.jQuery ) { + define( "jquery", [], function () { return jQuery; } ); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var div = document.createElement( "div" ), + documentElement = document.documentElement, + all, + a, + select, + opt, + input, + marginDiv, + support, + fragment, + body, + testElementParent, + testElement, + testElementStyle, + tds, + events, + eventName, + i, + isSupported; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
    a"; + + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName( "tbody" ).length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName( "link" ).length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure unknown elements (like HTML5 elems) are handled appropriately + unknownElems: !!div.getElementsByTagName( "nav" ).length, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + div.innerHTML = ""; + + // Figure out if the W3C box model works as expected + div.style.width = div.style.paddingLeft = "1px"; + + // We don't want to do body-related feature tests on frameset + // documents, which lack a body. So we use + // document.getElementsByTagName("body")[0], which is undefined in + // frameset documents, while document.body isn’t. (7398) + body = document.getElementsByTagName("body")[ 0 ]; + // We use our own, invisible, body unless the body is already present + // in which case we use a div (#9239) + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: "-999px", + top: "-999px" + }); + } + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + support.boxModel = div.offsetWidth === 2; + + if ( "zoom" in div.style ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
    "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName( "td" ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE < 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + } ) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Run fixed position tests at doc ready to avoid a crash + // related to the invisible body in IE8 + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop = 1, + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;", + vb = "visibility:hidden;border:0;", + style = "style='" + ptlm + "border:5px solid #000;padding:0;'", + html = "
    " + + "" + + "
    "; + + // Reconstruct a container + body = document.getElementsByTagName("body")[0]; + if ( !body ) { + // Return for frameset docs that don't have a body + // These tests cannot be done + return; + } + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct a test element + testElement = document.createElement("div"); + testElement.style.cssText = ptlm + vb; + + testElement.innerHTML = html; + container.appendChild( testElement ); + outer = testElement.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + testElement = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + // Null connected elements to avoid leaks in IE + testElement = fragment = select = opt = body = marginDiv = div = input = null; + + return support; +})(); + +// Keep track of boxModel +jQuery.boxModel = jQuery.support.boxModel; + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ jQuery.expando ] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support space separated names + if ( jQuery.isArray( name ) ) { + name = name; + } else if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ jQuery.expando ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } else { + elem[ jQuery.expando ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var $this = jQuery( this ), + args = [ parts[0], value ]; + + $this.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + $this.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return undefined; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( elem.nodeType === 1 ) { + attrNames = ( value || "" ).split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ].toLowerCase(); + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rnamespaces = /\.(.*)$/, + rformElems = /^(?:textarea|input|select)$/i, + rperiod = /\./g, + rspaces = / /g, + rescape = /[^\w\s.|`]/g, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || elem.id === m[2]) && + (!m[3] || m[3].test( elem.className )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = hoverHack(types).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + namespace: namespaces.join(".") + }, handleObjIn ); + + // Delegated event; pre-analyze selector so it's processed quickly on event dispatch + if ( selector ) { + handleObj.quick = quickParse( selector ); + if ( !handleObj.quick && jQuery.expr.match.POS.test( selector ) ) { + handleObj.isPositional = true; + } + } + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = hoverHack( types || "" ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + namespaces = namespaces? "." + namespaces : ""; + for ( j in events ) { + jQuery.event.remove( elem, j + namespaces, handler, selector ); + } + return; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Only need to loop for special events or selective removal + if ( handler || namespaces || selector || special.remove ) { + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( !handler || handler.guid === handleObj.guid ) { + if ( !namespaces || namespaces.test( handleObj.namespace ) ) { + if ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + } + } + } else { + // Removing all events + eventType.length = 0; + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // triggerHandler() and global events don't bubble or run the default action + if ( onlyHandlers || !elem ) { + event.preventDefault(); + } + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + old = null; + for ( cur = elem.parentNode; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length; i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) ) { + handle.apply( cur, data ); + } + + if ( event.isPropagationStopped() ) { + break; + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + specialHandle = ( jQuery.event.special[ event.type ] || {} ).handle, + handlerQueue = [], + i, j, cur, ret, selMatch, matched, matches, handleObj, sel, hit, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + hit = selMatch[ sel ]; + + if ( handleObj.isPositional ) { + // Since .is() does not work for positionals; see http://jsfiddle.net/eJ4yd/3/ + hit = ( hit || (selMatch[ sel ] = jQuery( sel )) ).index( cur ) >= 0; + } else if ( hit === undefined ) { + hit = selMatch[ sel ] = ( handleObj.quick ? quickIs( cur, handleObj.quick ) : jQuery( cur ).is( sel ) ); + } + if ( hit ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( specialHandle || handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + focus: { + delegateType: "focusin", + noBubble: true + }, + blur: { + delegateType: "focusout", + noBubble: true + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = jQuery.event.special[ fix ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + oldType, ret; + + // For a real mouseover/out, always call the handler; for + // mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || handleObj.origType === event.type || (related !== target && !jQuery.contains( target, related )) ) { + oldType = event.type; + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = oldType; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // Form was submitted, bubble the event up the tree + if ( this.parentNode ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw "Syntax error, unrecognized expression: " + msg; +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

    "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
    "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( " " ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr article aside audio canvas datalist details figcaption figure footer " + + "header hgroup mark meter nav output progress section summary time video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + col: [ 2, "", "
    " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + diff --git a/resources/views/layout1/close.sh b/resources/views/layout1/close.sh new file mode 100755 index 0000000..91e778e --- /dev/null +++ b/resources/views/layout1/close.sh @@ -0,0 +1,4 @@ +#!/bin/bash +cd /home/sirx/web/w0bm.com/resources/views/ +ln -sf registerclosed.blade.php register.blade.php +php ../../artisan view:clear diff --git a/resources/views/layout1/closedreg.php b/resources/views/layout1/closedreg.php new file mode 100644 index 0000000..dcf75af --- /dev/null +++ b/resources/views/layout1/closedreg.php @@ -0,0 +1,5 @@ +@extends('layout') +@section('content') + + +@endsection diff --git a/resources/views/layout3/vendor/.gitkeep b/resources/views/layout3/vendor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/layout3/video-partials/disqus.blade.php b/resources/views/layout3/video-partials/disqus.blade.php new file mode 100644 index 0000000..7cee7e9 --- /dev/null +++ b/resources/views/layout3/video-partials/disqus.blade.php @@ -0,0 +1,21 @@ +
    + + + \ No newline at end of file diff --git a/resources/views/layout3/video-partials/legacy-metadata.blade.php b/resources/views/layout3/video-partials/legacy-metadata.blade.php new file mode 100644 index 0000000..03cff33 --- /dev/null +++ b/resources/views/layout3/video-partials/legacy-metadata.blade.php @@ -0,0 +1,52 @@ + diff --git a/resources/views/layout3/video-partials/legacy-videonav.blade.php b/resources/views/layout3/video-partials/legacy-videonav.blade.php new file mode 100644 index 0000000..d465a85 --- /dev/null +++ b/resources/views/layout3/video-partials/legacy-videonav.blade.php @@ -0,0 +1,35 @@ +
    +@if($related) + @if(($prev = $video->getPrev($related)) === null) + +
    | + @else + +
    | + @endif + {!!$related->displayName()!!} + @if(($next = $video->getNext($related)) === null) + |
    + + @else + |
    + + @endif + @else + @if(($prev = $video->getPrev()) === null) + +
    | + @else + +
    | + @endif + random + @if(($next = $video->getNext()) === null) + |
    + + @else + |
    + + @endif + @endif +
    \ No newline at end of file diff --git a/resources/views/layout3/video-partials/popover-metadata.blade.php b/resources/views/layout3/video-partials/popover-metadata.blade.php new file mode 100644 index 0000000..a837915 --- /dev/null +++ b/resources/views/layout3/video-partials/popover-metadata.blade.php @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/resources/views/layout3/video-partials/video-fav.blade.php b/resources/views/layout3/video-partials/video-fav.blade.php new file mode 100644 index 0000000..8488b1c --- /dev/null +++ b/resources/views/layout3/video-partials/video-fav.blade.php @@ -0,0 +1,12 @@ + +
    + @if(auth()->check()) + @if(auth()->user()->hasFaved($video->id)) + UNFAV + @else + FAV + @endif + @else + FAVED + @endif +
    \ No newline at end of file diff --git a/resources/views/layout3/video-partials/video-matadata-overlay.blade.php b/resources/views/layout3/video-partials/video-matadata-overlay.blade.php new file mode 100644 index 0000000..ce6e361 --- /dev/null +++ b/resources/views/layout3/video-partials/video-matadata-overlay.blade.php @@ -0,0 +1,17 @@ + diff --git a/resources/views/layout3/video-partials/video-metadata.blade.php b/resources/views/layout3/video-partials/video-metadata.blade.php new file mode 100644 index 0000000..c21d20d --- /dev/null +++ b/resources/views/layout3/video-partials/video-metadata.blade.php @@ -0,0 +1,33 @@ + + +
    +
    + @if(count($video->tags)) + @foreach($video->tags as $tag) + {{$tag->name}}@if(Auth::check() && Auth::user()->can("edit_video")) @endif + @endforeach + @else + No tags yet ... + @endif +
    + +
    diff --git a/resources/views/layout3/video-partials/videocontrols.blade.php b/resources/views/layout3/video-partials/videocontrols.blade.php new file mode 100644 index 0000000..97f437a --- /dev/null +++ b/resources/views/layout3/video-partials/videocontrols.blade.php @@ -0,0 +1,18 @@ +
    + @if(($prev = $video->getPrev()) === null) + + + @else + +
    | + @endif + random + @if(($next = $video->getNext()) === null) + | + + @else + |
    + + @endif + +
    \ No newline at end of file diff --git a/resources/views/layout3/video.blade.php b/resources/views/layout3/video.blade.php new file mode 100644 index 0000000..3db664e --- /dev/null +++ b/resources/views/layout3/video.blade.php @@ -0,0 +1,37 @@ +@extends('layout') +@section('video') + +
    +
    +
    + +
    +
    + @include('video-partials.legacy-videonav') +
    +@endsection + +@section('testvideo') + +
    +
    +
    + +
    +
    + @include('video-partials.legacy-videonav') +
    +@endsection + +@section('floatvid') +
    + +
    + @include('video-partials.legacy-videonav') +@endsection diff --git a/server.php b/server.php new file mode 100644 index 0000000..f65c7c4 --- /dev/null +++ b/server.php @@ -0,0 +1,21 @@ + + */ + +$uri = urldecode( + parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) +); + +// This file allows us to emulate Apache's "mod_rewrite" functionality from the +// built-in PHP web server. This provides a convenient way to test a Laravel +// application without having installed a "real" web server software here. +if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { + return false; +} + +require_once __DIR__.'/public/index.php'; diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/storage/clockwork/.gitignore b/storage/clockwork/.gitignore new file mode 100644 index 0000000..a6c57f5 --- /dev/null +++ b/storage/clockwork/.gitignore @@ -0,0 +1 @@ +*.json diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..953edb7 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,7 @@ +config.php +routes.php +compiled.php +services.json +events.scanned.php +routes.scanned.php +down diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php new file mode 100644 index 0000000..7e81d37 --- /dev/null +++ b/tests/ExampleTest.php @@ -0,0 +1,19 @@ +visit('/') + ->see('Laravel 5'); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..8578b17 --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,25 @@ +make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); + + return $app; + } +}