diff --git a/.idea/kuvia.iml b/.idea/kuvia.iml index ea8c49a..a1a37f1 100644 --- a/.idea/kuvia.iml +++ b/.idea/kuvia.iml @@ -7,7 +7,9 @@ + + @@ -24,6 +26,7 @@ + @@ -33,9 +36,11 @@ + + diff --git a/.idea/php.xml b/.idea/php.xml index 4ffa295..f0b94d8 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -108,6 +108,11 @@ + + + + + diff --git a/app/Console/Commands/CalculateSpace.php b/app/Console/Commands/CalculateSpace.php new file mode 100644 index 0000000..422aa9b --- /dev/null +++ b/app/Console/Commands/CalculateSpace.php @@ -0,0 +1,79 @@ +get(); + for ($i = 0; $i <= 24; $i++) { + foreach ($galleries as $gallery) { + //Get file size for that hour for that gallery + $start = $day." ".$i.":00:00"; + $end = $day." ".$i.":59:59"; + $sql = "SELECT SUM(size) AS size FROM `go-mysql-admin`.images WHERE gallery = ".$gallery->id." AND uploaded_at < \"".$start."\" AND (deleted_at > \"".$end."\" OR deleted_at IS NULL);"; + $size = DB::select($sql)[0]->size; + $split = explode("-", $day); + $storage = \App\Models\Storage::query() + ->where("gallery", "=", $gallery->id) + ->where("tenant", "=", $gallery->tenant) + ->where("date", "=", $day) + ->where("hour", "=", $i) + ->first(); + if(is_null($storage)) { + $storage = new \App\Models\Storage(); + $storage->date = $day; + $storage->year = $split[0]; + $storage->month = $split[1]; + $storage->day = $split[2]; + $storage->hour = $i; + $storage->gallery = $gallery->id; + $storage->tenant = $gallery->tenant; + } + if($storage->size != $size) { + $storage->size = $size; + $storage->saveOrFail(); + } + } + + } + } +} diff --git a/app/Console/Commands/CalculateTraffic.php b/app/Console/Commands/CalculateTraffic.php new file mode 100644 index 0000000..904b66a --- /dev/null +++ b/app/Console/Commands/CalculateTraffic.php @@ -0,0 +1,83 @@ +tenant."-".$r->gallery."-".$r->year."-".$r->month."-".$r->day."-".$r->hour; + if(isset($result[$key])) { + $result[$key] = $result[$key] + $r->size; + } else { + $result[$key] = $r->size; + } + } + + + //Save result in db + var_dump($result); + foreach ($result as $key => $trafficSize) { + $split = explode("-", $key); + $traffic = Traffic::query() + ->where("tenant", "=", (int)$split[0]) + ->where("gallery", "=", (int)$split[1]) + ->where("year", "=", (int)$split[2]) + ->where("month", "=", (int)$split[3]) + ->where("day", "=", (int)$split[4]) + ->where("hour", "=", (int)$split[5]) + ->first(); + if($traffic == null) { + $traffic = new Traffic(); + $traffic->tenant = $split[0]; + $traffic->gallery = $split[1]; + $traffic->year = $split[2]; + $traffic->month =$split[3]; + $traffic->day = $split[4]; + $traffic->hour = $split[5]; + $traffic->date = $split[2]."-".$split[3]."-".$split[4]; + } + if($traffic->traffic != $trafficSize) { + $traffic->traffic = $trafficSize; + $traffic->saveOrFail(); + } + } + } +} diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php new file mode 100644 index 0000000..dcefb89 --- /dev/null +++ b/app/Http/Controllers/AccountController.php @@ -0,0 +1,61 @@ +validate([ + 'username' => 'required|unique:users|unique:tenants,url|regex:/^[a-z0-9]{8,30}$/i', + 'email' => 'required|unique:users|email:rfc,dns', + 'password' => 'required|min:8|confirmed', + ]); + + $user = new User(); + $user->password = Hash::make($validated["password"]); + $user->username = $validated["username"]; + $user->email = $validated["email"]; + $user->saveOrFail(); + + $tenant = new Tenant(); + $tenant->name = $validated["username"]; + $tenant->url = $validated["username"]; + $tenant->template = "default"; + $tenant->owner = $user->id; + $tenant->saveOrFail(); + return redirect("/login"); + } + + public function loginView() { + return view("account.login"); + } + + public function login(Request $request) { + $credentials = $request->only('username', 'password'); + if (Auth::attempt($credentials)) { + $request->session()->regenerate(); + + return redirect("/d"); + } + + return back()->withErrors([ + 'username' => 'The provided credentials do not match our records.', + ]); + } +} diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php new file mode 100644 index 0000000..5ceb9db --- /dev/null +++ b/app/Http/Controllers/DashboardController.php @@ -0,0 +1,38 @@ +size; + $currentTraffic = DB::select("SELECT SUM(size) AS size FROM `go-mysql-admin`.access WHERE tenant = 1 AND created_at >= NOW() - INTERVAL 1 DAY;")[0]->size; + $monthlyTraffic = DB::select("SELECT SUM(traffic) AS `traffic` FROM traffic WHERE `year` = 2021 AND `month` = 1 and tenant = 1;")[0]->traffic; + $lastDaysTreffic = Traffic::getLastDays(7); + $lastDaysSize = Storage::getLastDays(7); + return view("dashboard.index", [ + "currentSize" => $this->human_filesize($currentSize), + "currentTraffic" => $this->human_filesize($currentTraffic), + "monthlyTraffic" => $this->human_filesize($monthlyTraffic), + "lastDaysTreffic" => $lastDaysTreffic, + "lastDaysSize" => $lastDaysSize + ]); + } + + + private function human_filesize($bytes, $decimals = 2) { + $size = array('B','kB','MB','GB','TB','PB','EB','ZB','YB'); + $factor = floor((strlen($bytes) - 1) / 3); + return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor]; + } +} diff --git a/app/Http/Controllers/GalleryController.php b/app/Http/Controllers/GalleryController.php new file mode 100644 index 0000000..2727dee --- /dev/null +++ b/app/Http/Controllers/GalleryController.php @@ -0,0 +1,128 @@ +where("tenant", "=", session("current_tenant_id"))->orderByDesc("gallery_create_time")->orderByDesc("id")->get(); + $tenant = Tenant::query()->where("id", "=", session("current_tenant_id"))->firstOrFail(); + return view("gallery.index", ["galleries" => $galleries, "tenant" => $tenant]); + } + + public function newView() { + return view("gallery.new"); + } + + public function newGallery(Request $request) { + $validated = $request->validate([ + 'name' => 'required|max:255', + 'description' => 'max:15000000', + 'url' => [new urlOrNull()], + 'date' => [new dateOrNull()], + ]); + + //Check if Gallery Date is in the feature + if(!empty($validated["date"])) { + $t = new \DateTime($validated["date"]); + if($t > (new \DateTime())) { + return Redirect::back()->withErrors(["date" => "Gallery date can't be in the feature"])->withInput($validated); + } + } + + if(empty($validated["url"])) { + $prepairdName = strtolower($validated["name"]); + $prepairdName = str_replace(" ", "-", $prepairdName); + $prepairdName = str_replace("ö", "oe", $prepairdName); + $prepairdName = str_replace("ü", "üe", $prepairdName); + $prepairdName = str_replace("ö", "oe", $prepairdName); + $prepairdName = str_replace("ß", "ss", $prepairdName); + + while (strlen($prepairdName) < 8) { + $prepairdName = $prepairdName."0"; + } + preg_match_all("@[a-z0-9\-]@", $prepairdName, $matches); + $newUrl = ""; + foreach($matches[0] as $letter) { + $newUrl .= $letter; + } + + $baseUrl = $newUrl; + $i = 1; + while (true) { + $r = Gallery::getByTenantAndUrl(session("current_tenant_id"), $newUrl); + if($r == null) { + break; + } + $newUrl = $baseUrl.$i; + $i++; + } + } else { + $newUrl = $validated["url"]; + } + + //Check if url is free + $galleryTMP = Gallery::getByTenantAndUrl(session("current_tenant_id"), $newUrl); + if(!empty($galleryTMP)) { + return Redirect::back()->withErrors(["url" => "URL is already used"])->withInput($validated); + } + + $gallery = new Gallery(); + $gallery->name = $validated["name"]; + $gallery->url = $newUrl; + $gallery->description = $validated["description"]; + $gallery->tenant = session("current_tenant_id"); + if(!empty($validated["date"])) { + $gallery->gallery_create_time = $validated["date"]; + } + $gallery->saveOrFail(); + + + + return \redirect("/g/".$gallery->url."/upload"); + } + + public function imagesUploadView($name) { + return view("gallery.upload"); + } + + public function imageUpload($name, Request $request) { + $gallery = Gallery::getByTenantAndUrl(session("current_tenant_id"), $name); + $validated = $request->validate([ + 'files.0' => 'required|image' + ]); + $path = $validated["files"][0]->store("uploads/".session("current_tenant_id")."/".$name); + + + $image = new Image(); + $image->path = $path; + $image->driver = env('FILESYSTEM_DRIVER', 'local'); + $image->filename = $validated["files"][0]->getClientOriginalName(); + $image->gallery = $gallery->id; + $image->size = $validated["files"][0]->getSize(); + $image->saveOrFail(); + + if(is_null($gallery->main_image)) { + $gallery->main_image = $image->id; + $gallery->saveOrFail(); + } + + + return $name; + } +} diff --git a/app/Http/Controllers/PublicController.php b/app/Http/Controllers/PublicController.php new file mode 100644 index 0000000..6a46eaf --- /dev/null +++ b/app/Http/Controllers/PublicController.php @@ -0,0 +1,101 @@ +where("url", "=", $name)->firstOrFail(); + $galleries = Gallery::query()->where("tenant", "=", $tenant->id)->get(); + return view("themes.tenant.default.list", ["galleries" => $galleries, "tenant" => $tenant]); + } + + public function listGalleryImagesView($tenant, $gallery) { + $tenant = Tenant::query()->where("url", "=", $tenant)->firstOrFail(); + $gallery = Gallery::getByTenantAndUrl($tenant->id, $gallery); + $images = Image::query()->where("gallery", "=", $gallery->id)->get(); + return view("themes.gallery.default.list", ["gallery" => $gallery, "tenant" => $tenant, "images" => $images]); + } + + public function returnImageFile($tenant, $gallery, $image, Request $request) { + $tenant = Tenant::query()->where("url", "=", $tenant)->firstOrFail(); + $gallery = Gallery::getByTenantAndUrl($tenant->id, $gallery); + $image = Image::query()->where("gallery", "=", $gallery->id)->where("id", "=", $image)->firstOrFail(); + $size = $request->input("size", "medium"); + + $cacheName = "cache_".$tenant->id."_".$gallery->id."_".$image->id; + + //File exists in the right size + if (Storage::disk('cache')->exists($cacheName."_".$size)) { + Log::info("Get from Cache"); + + $this->addAccessLog($tenant->id, $gallery->id, $image->id, "Cache", Storage::disk('cache')->size($cacheName."_".$size)); + return Storage::disk('cache')->response($cacheName."_".$size); + } + + //ORginal File exists need to be resized + $file = null; + if (Storage::disk('cache')->exists($cacheName."_orginal")) { + Log::info("Get orginal size from Cache"); + $file = Storage::disk("cache")->get($cacheName."_orginal"); + $this->addAccessLog($tenant->id, $gallery->id, $image->id, "Cache", $image->size); + return Storage::disk('cache')->response($cacheName."_".$size); + } else { + Log::info("Get from S3"); + $this->addAccessLog($tenant->id, $gallery->id, $image->id, "Access", $image->size); + $file = Storage::disk($image->driver)->get($image->path); + Storage::disk("cache")->put($cacheName."_orginal", $file); + } + + //Resize + $image = ImageResize::createFromString($file); + $image->resizeToLongSide(self::SIZE_SMALL); + Storage::disk("cache")->put($cacheName."_small", $image->getImageAsString()); + + $image = ImageResize::createFromString($file); + $image->resizeToLongSide(self::SIZE_MEDIUM); + Storage::disk("cache")->put($cacheName."_medium", $image->getImageAsString()); + + $image = ImageResize::createFromString($file); + $image->resizeToLongSide(self::SIZE_BIG); + Storage::disk("cache")->put($cacheName."_big", $image->getImageAsString()); + + + + return Storage::disk('cache')->response($cacheName."_orginal"); + } + private function addAccessLog(int $tenant, int $gallery, int $image, string $typ, int $size) { + $access = new Access(); + $access->year = date("Y"); + $access->month = date("m"); + $access->day = date("d"); + $access->hour = date("H"); + $access->image = $image; + $access->gallery = $gallery; + $access->tenant = $tenant; + $access->typ = $typ; + $access->size = $size; + $access->saveOrFail(); + } +} diff --git a/app/Http/Controllers/TenantController.php b/app/Http/Controllers/TenantController.php new file mode 100644 index 0000000..d21760c --- /dev/null +++ b/app/Http/Controllers/TenantController.php @@ -0,0 +1,55 @@ +validate([ + 'name' => 'required|max:255', + 'url' => 'required|unique:tenants|regex:/^[a-z0-9]{8,30}$/i' + ]); + + $tenant = new Tenant(); + $tenant->name = $validated["name"]; + $tenant->url = $validated["url"]; + $tenant->template = "default"; + $tenant->owner = Auth::user()->id; + $tenant->saveOrFail(); + + $this->switchTenantById($tenant->id); + + + return redirect("/d"); + } + + public function switchTenant($url, Request $request) { + $tenant = Tenant::getByUrl($url); + if($tenant->owner == Auth::id()) { + $this->switchTenantById($tenant->id); + return Redirect::back(); + } else { + return Redirect::back()->with(["msg" => "No Access to given Tenant"]); + } + } + + private function switchTenantById($id) { + session(["current_tenant_id" => $id]); + } +} diff --git a/app/Http/Middleware/TenanMiddleware.php b/app/Http/Middleware/TenanMiddleware.php new file mode 100644 index 0000000..089c246 --- /dev/null +++ b/app/Http/Middleware/TenanMiddleware.php @@ -0,0 +1,27 @@ +share('user_tenants', Tenant::getTenantPerUser(Auth::id())); + } + + + return $next($request); + } +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index 0c13b85..23435b2 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -12,6 +12,6 @@ class VerifyCsrfToken extends Middleware * @var array */ protected $except = [ - // + '/g/*/upload' ]; } diff --git a/app/Models/Access.php b/app/Models/Access.php new file mode 100644 index 0000000..4fbb6ee --- /dev/null +++ b/app/Models/Access.php @@ -0,0 +1,44 @@ +where("tenant", "=", $tenant_id)->where("url", "=", $url)->first(); + } +} diff --git a/app/Models/Image.php b/app/Models/Image.php new file mode 100644 index 0000000..fd7b8c1 --- /dev/null +++ b/app/Models/Image.php @@ -0,0 +1,45 @@ +format('Y-m-d'); + $result[$day->format('Y-m-d')] = 0; + foreach($res as $r) { + if($r->date == $day->format('Y-m-d')) { + $result[$day->format('Y-m-d')] = $r->size / 1000 / 1000; + } + } + + } + return $result; + } + +} diff --git a/app/Models/Tenant.php b/app/Models/Tenant.php new file mode 100644 index 0000000..14ebd9f --- /dev/null +++ b/app/Models/Tenant.php @@ -0,0 +1,49 @@ +where("owner", "=", $user_id)->get(); + } + + public static function getByUrl(string $url) { + return Tenant::query()->where("url", "=", $url)->firstOrFail(); + } +} diff --git a/app/Models/Traffic.php b/app/Models/Traffic.php new file mode 100644 index 0000000..6031dc1 --- /dev/null +++ b/app/Models/Traffic.php @@ -0,0 +1,70 @@ +format('Y-m-d'); + $result[$day->format('Y-m-d')] = 0; + foreach($res as $r) { + if($r->year == $day->format('Y') && $r->month == $day->format('m') && $r->day == $day->format('d')) { + $result[$day->format('Y-m-d')] = $r->traffic / 1000 / 1000; + } + } + + } + return $result; + } + +} diff --git a/app/Models/User.php b/app/Models/User.php index 804799b..46cd345 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,7 +17,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', + 'username', 'email', 'password', ]; diff --git a/app/Rules/dateOrNull.php b/app/Rules/dateOrNull.php new file mode 100644 index 0000000..82ee0f7 --- /dev/null +++ b/app/Rules/dateOrNull.php @@ -0,0 +1,44 @@ +=5.5" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", + "nette/neon": "^2.3", + "paragonie/random_compat": ">= 2", + "phpunit/phpunit": "^4.8.35|^5.4.3", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0", + "sebastian/comparator": "^1.2.3" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Aws\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "support": { + "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "issues": "https://github.com/aws/aws-sdk-php/issues", + "source": "https://github.com/aws/aws-sdk-php/tree/3.171.15" + }, + "time": "2021-01-11T19:28:59+00:00" + }, { "name": "brick/math", "version": "0.9.1", @@ -660,6 +793,65 @@ ], "time": "2020-04-13T13:17:36+00:00" }, + { + "name": "gumlet/php-image-resize", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/gumlet/php-image-resize.git", + "reference": "06339a9c1b167acd58173db226f57957a6617547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/gumlet/php-image-resize/zipball/06339a9c1b167acd58173db226f57957a6617547", + "reference": "06339a9c1b167acd58173db226f57957a6617547", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "ext-gd": "*", + "php": ">=5.5.0" + }, + "require-dev": { + "apigen/apigen": "^4.1", + "ext-exif": "*", + "ext-gd": "*", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^4.8" + }, + "suggest": { + "ext-exif": "Auto-rotate jpeg files" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gumlet\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aditya Patadia", + "homepage": "http://aditya.patadia.org/" + } + ], + "description": "PHP class to re-size and scale images", + "homepage": "https://github.com/gumlet/php-image-resize", + "keywords": [ + "image", + "php", + "resize", + "scale" + ], + "support": { + "issues": "https://github.com/gumlet/php-image-resize/issues", + "source": "https://github.com/gumlet/php-image-resize/tree/master" + }, + "time": "2019-01-01T13:53:00+00:00" + }, { "name": "guzzlehttp/guzzle", "version": "7.2.0", @@ -1323,6 +1515,57 @@ ], "time": "2020-08-23T07:39:11+00:00" }, + { + "name": "league/flysystem-aws-s3-v3", + "version": "1.0.29", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "4e25cc0582a36a786c31115e419c6e40498f6972" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4e25cc0582a36a786c31115e419c6e40498f6972", + "reference": "4e25cc0582a36a786c31115e419c6e40498f6972", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "^3.20.0", + "league/flysystem": "^1.0.40", + "php": ">=5.5.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3v3\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "support": { + "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.29" + }, + "time": "2020-10-08T18:58:37+00:00" + }, { "name": "league/mime-type-detection", "version": "1.5.1", @@ -1474,6 +1717,67 @@ ], "time": "2020-12-14T13:15:25+00:00" }, + { + "name": "mtdowling/jmespath.php", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "42dae2cbd13154083ca6d70099692fef8ca84bfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/42dae2cbd13154083ca6d70099692fef8ca84bfb", + "reference": "42dae2cbd13154083ca6d70099692fef8ca84bfb", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^1.4", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "JmesPath\\": "src/" + }, + "files": [ + "src/JmesPath.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.0" + }, + "time": "2020-07-31T21:01:56+00:00" + }, { "name": "nesbot/carbon", "version": "2.43.0", diff --git a/config/filesystems.php b/config/filesystems.php index 10c9d9b..709272f 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -35,11 +35,9 @@ return [ 'root' => storage_path('app'), ], - 'public' => [ + 'cache' => [ 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', + 'root' => storage_path('cache'), ], 's3' => [ diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 621a24e..23edd5e 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -15,12 +15,13 @@ class CreateUsersTable extends Migration { Schema::create('users', function (Blueprint $table) { $table->id(); - $table->string('name'); + $table->timestamps(); + $table->string('username'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); - $table->timestamps(); + }); } diff --git a/database/migrations/2021_01_11_153100_tenant.php b/database/migrations/2021_01_11_153100_tenant.php new file mode 100644 index 0000000..a9419d2 --- /dev/null +++ b/database/migrations/2021_01_11_153100_tenant.php @@ -0,0 +1,37 @@ +id(); + $table->timestamps(); + $table->string('name'); + $table->string('url'); + $table->string("template"); + $table->unsignedBigInteger("owner"); + + $table->foreign('owner')->references('id')->on('users'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tenant'); + } +} diff --git a/database/migrations/2021_01_11_201731_gallery.php b/database/migrations/2021_01_11_201731_gallery.php new file mode 100644 index 0000000..e022546 --- /dev/null +++ b/database/migrations/2021_01_11_201731_gallery.php @@ -0,0 +1,40 @@ +id(); + $table->timestamps(); + $table->string('name'); + $table->string('url'); + $table->mediumText("description")->nullable(); + $table->unsignedBigInteger("tenant"); + $table->date("gallery_create_time")->default(\Illuminate\Support\Facades\DB::raw('CURRENT_DATE')); + + + $table->foreign('tenant')->references('id')->on('tenants'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists("galleries"); + } +} diff --git a/database/migrations/2021_01_11_221353_image.php b/database/migrations/2021_01_11_221353_image.php new file mode 100644 index 0000000..43a2b5d --- /dev/null +++ b/database/migrations/2021_01_11_221353_image.php @@ -0,0 +1,40 @@ +id(); + $table->timestamps(); + $table->string("path"); + $table->string("driver"); + $table->string("filename"); + $table->integer("size"); + $table->timestamp("uploaded_at")->default(\Illuminate\Support\Facades\DB::raw('CURRENT_TIMESTAMP')); + $table->timestamp("deleted_at")->nullable(); + $table->unsignedBigInteger("gallery"); + + $table->foreign('gallery')->references('id')->on('galleries'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists("images"); + } +} diff --git a/database/migrations/2021_01_12_094048_gallery_main_image.php b/database/migrations/2021_01_12_094048_gallery_main_image.php new file mode 100644 index 0000000..b46bdd9 --- /dev/null +++ b/database/migrations/2021_01_12_094048_gallery_main_image.php @@ -0,0 +1,32 @@ +unsignedBigInteger("main_image")->nullable()->default(null); + $table->foreign('main_image')->references('id')->on('images'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2021_01_12_095330_access.php b/database/migrations/2021_01_12_095330_access.php new file mode 100644 index 0000000..f4319cd --- /dev/null +++ b/database/migrations/2021_01_12_095330_access.php @@ -0,0 +1,44 @@ +id(); + $table->timestamp("created_at")->default(\Illuminate\Support\Facades\DB::raw('CURRENT_TIMESTAMP')); + $table->smallInteger("year"); + $table->tinyInteger("month"); + $table->tinyInteger("day"); + $table->tinyInteger("hour"); + $table->unsignedBigInteger("image"); + $table->unsignedBigInteger("gallery"); + $table->unsignedBigInteger("tenant"); + $table->enum("typ", ["Access", "Cache"]); + $table->integer("size"); + + $table->foreign('image')->references('id')->on('images'); + $table->foreign('gallery')->references('id')->on('galleries'); + $table->foreign('tenant')->references('id')->on('tenants'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists("access"); + } +} diff --git a/database/migrations/2021_01_12_104042_traffic.php b/database/migrations/2021_01_12_104042_traffic.php new file mode 100644 index 0000000..1e8bc9e --- /dev/null +++ b/database/migrations/2021_01_12_104042_traffic.php @@ -0,0 +1,43 @@ +id(); + $table->timestamps(); + $table->smallInteger("year"); + $table->tinyInteger("month"); + $table->tinyInteger("day"); + $table->tinyInteger("hour"); + $table->date("date"); + $table->unsignedBigInteger("tenant"); + $table->unsignedBigInteger("gallery"); + $table->bigInteger("traffic"); + + $table->foreign('gallery')->references('id')->on('galleries'); + $table->foreign('tenant')->references('id')->on('tenants'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2021_01_12_134145_storage_log.php b/database/migrations/2021_01_12_134145_storage_log.php new file mode 100644 index 0000000..6da362e --- /dev/null +++ b/database/migrations/2021_01_12_134145_storage_log.php @@ -0,0 +1,43 @@ +id(); + $table->timestamps(); + $table->smallInteger("year"); + $table->tinyInteger("month"); + $table->tinyInteger("day"); + $table->tinyInteger("hour"); + $table->date("date"); + $table->unsignedBigInteger("tenant"); + $table->unsignedBigInteger("gallery"); + $table->bigInteger("size"); + + $table->foreign('gallery')->references('id')->on('galleries'); + $table->foreign('tenant')->references('id')->on('tenants'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists("storage"); + } +} diff --git a/public/assets b/public/assets new file mode 120000 index 0000000..6898b4f --- /dev/null +++ b/public/assets @@ -0,0 +1 @@ +../resources/assets \ No newline at end of file diff --git a/public/css b/public/css new file mode 120000 index 0000000..9839c6e --- /dev/null +++ b/public/css @@ -0,0 +1 @@ +../resources/css \ No newline at end of file diff --git a/public/dist b/public/dist new file mode 120000 index 0000000..c47ac7a --- /dev/null +++ b/public/dist @@ -0,0 +1 @@ +../vendor/almasaeed2010/adminlte/dist \ No newline at end of file diff --git a/public/images b/public/images new file mode 120000 index 0000000..16edd52 --- /dev/null +++ b/public/images @@ -0,0 +1 @@ +../resources/images \ No newline at end of file diff --git a/public/js b/public/js new file mode 120000 index 0000000..fafa36e --- /dev/null +++ b/public/js @@ -0,0 +1 @@ +../resources/js \ No newline at end of file diff --git a/public/plugins b/public/plugins new file mode 120000 index 0000000..898cdf5 --- /dev/null +++ b/public/plugins @@ -0,0 +1 @@ +../vendor/almasaeed2010/adminlte/plugins \ No newline at end of file diff --git a/resources/assets/fonts/jquery.filer-icons/jquery-filer-preview.html b/resources/assets/fonts/jquery.filer-icons/jquery-filer-preview.html new file mode 100644 index 0000000..5e9fa8a --- /dev/null +++ b/resources/assets/fonts/jquery.filer-icons/jquery-filer-preview.html @@ -0,0 +1,924 @@ + + + + jquery-filer glyphs preview + + + + + + + + + +
+
+

jquery-filer contains 48 glyphs:

+ Toggle Preview Characters +
+ + +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ PpPpPpPpPpPpPpPpPpPp +
+
+ 12141618212436486072 +
+
+ + +
+
+ + + +
+ + diff --git a/resources/assets/fonts/jquery.filer-icons/jquery-filer.css b/resources/assets/fonts/jquery.filer-icons/jquery-filer.css new file mode 100644 index 0000000..e64e034 --- /dev/null +++ b/resources/assets/fonts/jquery.filer-icons/jquery-filer.css @@ -0,0 +1,135 @@ +/* + Icon Font: jquery-filer +*/ + +@font-face { + font-family: "jquery-filer"; + src: url("./jquery-filer.eot"); + src: url("./jquery-filer.eot?#iefix") format("embedded-opentype"), + url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABY8AA0AAAAAJGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAWIAAAABoAAAAcbgWsnk9TLzIAAAGgAAAASgAAAGBDMGCrY21hcAAAAjgAAAB2AAABir/jw6BjdnQgAAACsAAAAAQAAAAEABEBRGdhc3AAABYYAAAACAAAAAj//wADZ2x5ZgAAAxwAABDDAAAbVDwbM1RoZWFkAAABMAAAADAAAAA2AudKS2hoZWEAAAFgAAAAIAAAACQD8QHEaG10eAAAAewAAABLAAAAbgpuBLZsb2NhAAACtAAAAGgAAABonHCkGm1heHAAAAGAAAAAIAAAACAAgQDCbmFtZQAAE+AAAAFmAAACwZhqioJwb3N0AAAVSAAAAM8AAAIIqeejRXjaY2BkYGAA4ogbscvj+W2+MnAzMYDAhScsz2H0////9zMxMh4EcjkYwNIAbNUNrHjaY2BkYGA8+H8/gx4Tw///DAxMjAxAERTAAgB/egS4AAEAAAAzAJEADAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYWJg/MLAysDA6MOYxsDA4A6lvzJIMrQwMDAxsHEywIEAgskQkOaawnDg07fPLowH/h9g0GM8yOAIFGZEUqLAwAgAW4ENdAAAeNpjYmAQZAACJgi2Y1BgcAAyVYC4ASQO5IFEHBiyweI2QNIGzFIAQgaGE0C2CpClzCAHhBD1DgwLwKQDQyBQbAZYNQTYAAC2kQkrAHja3YxNCoNADIXfOGUUnEDtQlwobnuQHqYH6Xm7yAMRReLUigvpCfpBEt4PAeDxnRYOH15JuU1f8Ey3xjU5QUedCXrmFN7YsOfDDNBBZ7XNL1mxZse7mYiUUkgQL4hLnOIQ3/v/H7iAI3RZWtm5gL9nBYpEIu8AAAARAUQAAAAqACoAKgBSAJ4AvgEGAUQBfAGqAkACeAKyAwwDPAN+A7gEDASUBLIE8gUgBVgFmgX8BjYGhga2BvoHSAeeB/AIHAhiCLII5AkcCYIJwgoSCi4KWgqyCuALNguYDGwMvAzwDUINqnjanVl7jNzGeZ+Pr1lyd0nuckne7d5x38t7P3aXy3vsPSRLOkknyVIiy3q4tlzbkuw6tRoHidTW8cVwYBVF28SxdQ5gNIpTCwWaJrJRGW5go+fHH0VRIEbkPwo0CGQjRV0kQa0U7R+tQfUbcu+0d3KMonviPD7OcGa+5+8bEY6kCCHfhrsITygZewXIePtVKpBf1V+RxJ+2X+U5bJJXeEYWGflVKsEn7VeB0RupRsptpMqpC185dQruCv4qBQ38GpB5Uoa3YT+xsJfROKk0ztWaC9Cq58FnBbxNr5ZohpZOUMrqvX/BOtCXkV4rSRJSsUfp3pexjV/gSYEU4Dos4l6LZJKQas21zIxUqnlNX6IO1Fu1Zq1cksyMVW95zVajbmWoCqWaW2v681C3bFirTWvb79muTdeKD33poW9RMT9KFepY4j+L5S8//eWyGFVXZvuzztj27WNOtn+2MTf3pwodzYuUipazT5dndu6alnV5etfOGRKec5EYsAZfYDzEVUw86jjUwg3YLbhrZKH4XDy+6iyMeIUCfGFhdLRwMR7/dn54dGFoKJxPyBGOwG5SZ3ySyqVxaJZddpKM1aj7pm/TMlJr4Qe9PCCxxQ6qgesjiSNLk9MVgC/kBqueVx3J9do9UJmZXFqa9CrcY7lhRh3I9dt9FX8S4MFdwwDPON5erwR5Iz+y68GlAeD+qIiE/opRGSQiqdz8OXwALxGFqCSN0svjJpGVQH2UnQ227/qdx27hSXEjNryfTAb//udNSCXcRPA3xuxMevHlBXPBWngkHh8SkoK1CI8kazjG+w6kcOyLRmamZ+HlRXPRWjTZEMFaIIQj5OZPkBc/wHWrhPhlr2HOAwrSpmOADKENu2GWPRXbNdd38E3LL1+96thPHLhzxew3Htu55/f0Jy9uJfz46h/uuefk/tgdh+/Z1e5q43orRIcVOEuSJEdIJaMBaikgq2dRnTLSMGpPR2NhRTwrJvBRpOuSEhYR4SIjsqZyJKEoUYfpBXfz5s01DmCNjJNThIhm0ZsH30NtdGstvzYHbZjn/AkfC5SrRSV8sMQ/0wGxOAbj4PmtBWhM4LSWR/2WW8O6Ngwq4CAV+iGTB9eyrTxn5cFECkcCAmePmKoqU14BUTFVXlSy6dhRU6Ax3EsqHtPV9OHHgiKsyQ/uVqWUysc5AXiV5wBbyTtoKiEoKZ1yvA68KMqcakjJPacmNW3+XrVmDNKM3k8VOa5qvWqCE5REHGbjaTMjJ7WSHaumh5L3jY3vkrnPiYlBhadCTIIeTezro+BCTDaAS+cTSd0SJCnOcbHhpHAI5F2ocwR5RVDn4kQjBrFJGXWukSqmGqgB+FAsivhAqtgLRa+MShA+cPl4QI6fuHhiLh98nIfloA3vtrHbhqdZ08FfG3/BcUgG/wHDvzWHPyYbtFmCNrsSrVRtRmrssgL9R2hjCzAPGXQfY9BkzgO+JlpiUjw1hYUlisdFiYrPiAvNo2eONbA4+lFMQPJDUyK+pVQ4LuLbNL5rHDtztNkM1yzcvI7+6yRa1Cz2Syqgp8ozWaKUbVxxHpo1K8OU22VqwHS82aot8POiPwZetIvGqWPNSgH1JF5z4lpKaxxrNg+3T8+l0/VtSR0ECQA44DgugYoa49zR9unfPw2L5dlSXyOd7LFMPadwXHl2x+zk0T3D3IgucKIIApvBcaqoJtKKta02smd4eN23FeAS8olxyWQGYUZWMcdMcA6YoXihtVj9zE7hkqqcUZUJRT2jqF3Nj26jsGaXHMpoJaTqNVG9w6Ik9TODRx23ZhmfmD3OAeNRt0zOKtKiIhUkZZGZ5Ebz4IZUrtz2jjX3dssFyO+QHDwPO9kZ1z0AjdzAAqpEd8SyMszXPSeVYhlp714pE8M4hfWW/n0Ytz6Nvt7v1r9h4kf6h6bNtDB062EZ6iG9pY32p+jkfeLoaKhwEmugRqIK3ka5f4MbFz5rWIfyeDdvKLNLlP8a2uUo7nQb2U+OkYcIKUTCZ1LPGGEplVORZnip2xTDRcuNhGqgSUfCNMIgVgyDXLrra1ZXG1xVllX5YNIwktXc9VyVNU7iv6SxclKmi1ReC64byetJQ6eyTIM1Vt4dzlkKS5mGpDUKXzGShaQR4DeqOSiEnQL7WkHX2dzgYSgE+B0D9svhzGBtY+6tAjFIG/nxLvJDQN4kUYY2Hsg2G1BMMW9U/m5w7sYDwT/AvtWrsHYpuMSR5gPBVRhdjWReQJmfJDoZCJGCBiqHHKih2FuNql1s+UyqszDDOZztAOMd/CBBIQGcEgveScQgCTQBR7ngLzmBU3hlWZZiPC9xiUTqz2IUSEz5kRRDFX9dUSaL5hClPM9RPiFKzJalLXtPEZP0bj2Bje6W4uPis+k0r88MnT00svlMTz76qDA2lm80kC+RPj9FZIzcJabRLmUejaM+KjPzdJWMypXGuOY8V3cALlhvlAb66hXrv98sDVYXKrDbaS4dWGo6UfXWQPENy6o0xt+wKwvVwYMHdjedfGN3NCD0pYRMYby4G1cbCnmJ+ldkSLBlM7xgt+wNjMSAVKdCVYMVb3nZCz4cnG4P6rtHZoZ6swMzMwM9djxWalRn40KSCn0DA30wtfzwvpmBoRlusD4U/2D60HRCkt2RSpKDgSmXRP4cV74OXyMxsoRYBQERdTEm+QwCoiV4TMtR7ctu02t2bULj1MihmeVww3644RDl4Ly34nuXE76+WhqfKD10v5Bza33a7FDfZFJS5bjey4Ns9Y04J07UmqUcX7LUhDpdmtgJb8SXl+OtX//aapRKk7rb1zcENDk4U8gmJdHWZT7m9uRHdK/qjMuWIzmVHRPAhb5vPSZVme/bCD3SlsjDMdd+fSPMCHRrlKm0Pzc2d/qX6yEFpNtjSqE93Dscye7mRyi7b5Ex5vtIyKvGp4trg0kdqTbqPOOyj2rKkWXv85/vkl1bWZfdY491Sde7XDePHDFR6YYeWXamD80kJXlglMnRnRpwpgcHmYQH48FfR8P+Dff392inU+ibNYZ8qxsBL/JmBu24OTfqwwRGlDCsSEosFlWKdJDKZ6YYlRXArbEmK8I8Zt33xxFzjhKSxr11nHrL2Ah+kZf0/KbLCBgH7Ijyj8w1hw79+4IwgRCNnxAEgeP5KTR2QRTGBAFWwgHMiwefREOwOPZiKA/uRU4QSLiPCu7jp3AJz1kkjfXo+1lru4aFKJMZGkJRI4xAhejjrBDQKU3hE22CX5NlUYsFKzFNlOU1QUtruzf2cv8XEXPyIHyR5/lfBpc0PYY/XYOTMVlety2W610iLlm4XQYs3HTvdJ3us3Rwc/COZLQy5LznDA05V5BVwhW9p0d/T+8RBF0QTiJiH/keL/F9PP+9EdTmFUl5/SAbixPCEeHYHv0gznwfX7LROFhioxNMoAIph9j1b1FbhhHFoE4bYipMUaKMrWpO9HHm5C0KxazFC/OZjGWIXjXNlB87V2EZGpVKs1kp9gY3uHql0mhgc8YuclzRtkulx0ALbrw5USpNFOH1bcF3KvXGnqb9J97raItQnmzsaVh/kLclu1AaL4HhHfOCZRxanMA9Ojd/Bh8ivmb5fRw9PzGKqWIVMbWHtUhd9ocZnQPvIm6+HJyDC/icNfeML5/qferAALwUtBFJn4DR/7KW6k8/n3rzj5kts+/+HZ59DXF0EU8/FsUTL4wlJvNoKeqmQixg+B3UbhvratbwMezc993gAhxf/YlqZPfuy6X1XAExe3FaltqSfPzaA2HEcTDYOFkjCC4+D7yRRTi//cprr13ZDnOSLEujv/0A6fiVT8IcokIQ41f9lPsbsKoZAku2O9ujXoRCtgBNeOb8+azxsZHVjFzOGMkZly9T+UMje+K8LAXvMzQwKksfS/J/Hg7eO7wjnculL+fSbSOnpXOOLGk541/eOPwEG4aneJdt8qsbOc4aSaDFZZBj/SG3MMf1omwGo3C1gewzzAZfZDQ4d2H1/PmLzrVdQf3dZ4Kr13b9D2jnVmHtq8E/OTfO5+f8bQ424Xe3BTdunO/kNet3ESyDwow51DMGIhnArLm330/0jcWVsf5aK7v6XH+rtvm24t5Cb2+h5VZzL1zMuW5L23p5cQvHNsmeMIJwLGupYULTalg2S9DnueYYx1J3luJ2jNhv5YE5dAfoJsvuAEZYyzeW3OEDOVTrEs8LXNpzsuPlTKY8nu0ZS5VigqicRWeq0GJ2Z9Vdaj4lCMw8hanQYP+VwYRKEXFRiQeuJ4vTmjg7rZcpzpHOKqIQK/T25Ru1s2wSzjiKFZ7lEvqcRTyLw/R4s8/xyt3eB1WH3+KSYDF0HYqk66w8KSlYF26FhoMF1sDiZFgq0jcUyE6wxkQUFrriAlt/5rZsqBMNN5yeu8VdW92JwSL6rQ5TenpYiUctYLxgTSwubaQEuwcEYYVRB8LhWAo/H+j0hYnNedIiuYS5AEHtDbnD4gA7fqMY5X3Beyyrw3gYZnthnqduyrU1dseyJcrcls+th8rNOVzEtC152yEC8EN4MowQ0b1ZpNWYMJmdfkf32ZVZJ72K+uaW8fBD1yn1vNPnD7j9q7wu8NwLRjZbNd7WM7qpPSvJVKGnQvppvd+0tG/27nLc3rf73QG/7wWOF3T+BaOWzRrvaCbO+KYkx2LS6ZB+SjfNfv3ZHuSDg/j7w9BX5sIdR/DPDuFgCBXZlZabKqfgw6//6OsP7qd33P34S4/ffQfd/+A156V7n3763jufSDnaozsOPf74oR2Pav36Ez8OrsEo4/ELqLtPIo7TSPv2eOlnVJ6q0EVF0BmCUob1GCPGgF0lOhxMSEJbkMLizpicjiuKyjpiIaMlbC2lyGle5PlBNKyBfZmBYubU+mjpWdXWNCpKpiTEZDFuVtEPxuM6lWyBy/NU2K5nq5v1XEMt33U77vCbzGdRKRSb32IbY/KKbrwiZMIOIHYrTpduL/YNWnMFQSoi+zk1FksmDCWhZ8N38VhMVmPSyVvqvz5L+L5Vy3iS2At8SpKSshyXaH9KZm9FTRTEZCKt3dI+oePL38JoqpE7yDcYirOYRJtWJ5hjak1tibpS50rRpSjeWoRLWr6Lcm9FFwuW7Vs2tdjlAvUxVfDGORy2wGa4tXG+VC6VNY5BYvwexeyhD0wcmweKE20rz89AY4FjN0gtn90i+B/Mj4zMj0yhNtayMHxAlGtpe7ee7tH6tJ60vttO12TxAMf9phdn9s7o6CAp7RfEHaqqaWKaAcu0qGmqukMQKxTd7969bEjl1giJxwF6Ut0hCv0UR0BihG1jX5ZtQwk/b7jr67qGvZT67A1ZKDshLei4ptrqLKrNzmpdy+oWT3krXBQHxKgo6DMzuiDSGA7wNDWp38IE/79cI0znGCz6P+caX6o7LI347FRjrf6LX9StI0dwP7ENTBDhsujuM8fyjjnALNxseH7DLDPoBF7Utzv1taur565hgaiAta6u/or1Vp1rziqjsXZUMptL4Do/+9R1yoiwGWpFPGiGeJDiUzWLHmzU0Xr8lnoVHg5WYTm45mDjKoziE9XOuePt450H1s4harx2Dpvt4Mb581iB3ul1E6M9dt9PRLcT/Ygqq2QQs6TQU2y+q2Bo0g65E91XlNl/Daz3sbaY20ArLDHcbTP/Gom51X2x0XZOzDnhr71RifVyTMsLXG/lbiHdm0oleW3zxYeDXO7MOJHPs8Zb5V5NzQnluktpIp3uSXP/CyLCXdEAeNqNkc1qwkAUhc/4By1S2lVdztKCiZOAm2wFxV1X7lOdaCQkmkwQX0P6GKX7PkuhT9AH6LIncSh20WKGmfudMzd37jAAbvAKgdM3w7NlgS6+LDfQFneWm+iL2HILXfFiuY1b8W65g26jw0zRuqI61n9VLNDDh+UGrkXbchOP4t5yCz1xtNyGFG+WO/Q/MUYOjRCG6xISTzhwnaFEgph+SjVlTLCgLrkO6iGxpzZYkybImGfqmGPFShI+XCjGPjMMxxYBhhyRzY1+cl0UVC5dTf8BGOc6NHopnw5yViZxmMppmCzicjEYDOQ+Nms5yVIzyfKVlr6rZH9tzDYYDiO6UeW6ReSm2rDUBjv2rHnSAQ5PiXmPSmGzK3V+cKI40VRnG9b570oB51+FT7s+8xx4nBV5GLHgr5YDed4Apa8cz/GVN7q453ltFtzO6kdS9UluHasuMdd5EWepVMpzlVLy0srfppZ9qgAAeNpdzkdSw1AUBVG1CCbnZJLJOUj/fWwzxID2woQZ+2NnQIlmgianStKrvkVZtM/XZ9H9geL/E+3bkpIxxplgkg5TTDPDLHPMs8AiSyyzwiprrLPBJlt02WaHXfbYp8cBhxxxzAmnnHHOBZdccc0Nt9xxT0Xd+Xh/a1LT14EOdaRNa1SVhg50pM/68mtda9K+elcP9e//V7WX/J4e9UntJXvJ++R98j7cG+4Id4T7I+uDui/cF/bDftgP+2E/7If9sJ/tZ/vZfraf8zcFz3IYAAAAAAH//wACeNpjYGBgZACCM7aLzoPoC09YnsNoAFB9B7oAAA==), + url("./jquery-filer.woff") format("woff"), + url("./jquery-filer.ttf") format("truetype"), + url("./jquery-filer.svg#jquery-filer") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "jquery-filer"; + src: url("./jquery-filer.svg#jquery-filer") format("svg"); + } +} + +[data-icon]:before { content: attr(data-icon); } + +[data-icon]:before, +.icon-jfi-ban:before, +.icon-jfi-calendar:before, +.icon-jfi-check:before, +.icon-jfi-check-circle:before, +.icon-jfi-cloud-o:before, +.icon-jfi-cloud-up-o:before, +.icon-jfi-comment:before, +.icon-jfi-comment-o:before, +.icon-jfi-download-o:before, +.icon-jfi-exclamation:before, +.icon-jfi-exclamation-circle:before, +.icon-jfi-exclamation-triangle:before, +.icon-jfi-external-link:before, +.icon-jfi-eye:before, +.icon-jfi-file:before, +.icon-jfi-file-audio:before, +.icon-jfi-file-image:before, +.icon-jfi-file-o:before, +.icon-jfi-file-text:before, +.icon-jfi-file-video:before, +.icon-jfi-files-o:before, +.icon-jfi-folder:before, +.icon-jfi-heart:before, +.icon-jfi-heart-o:before, +.icon-jfi-history:before, +.icon-jfi-infinite:before, +.icon-jfi-info:before, +.icon-jfi-info-circle:before, +.icon-jfi-minus:before, +.icon-jfi-minus-circle:before, +.icon-jfi-paperclip:before, +.icon-jfi-pencil:before, +.icon-jfi-plus:before, +.icon-jfi-plus-circle:before, +.icon-jfi-power-off:before, +.icon-jfi-question:before, +.icon-jfi-question-circle:before, +.icon-jfi-reload:before, +.icon-jfi-settings:before, +.icon-jfi-sort:before, +.icon-jfi-times:before, +.icon-jfi-times-circle:before, +.icon-jfi-trash:before, +.icon-jfi-upload-o:before, +.icon-jfi-user:before, +.icon-jfi-view-grid:before, +.icon-jfi-view-list:before, +.icon-jfi-zip:before { + display: inline-block; + font-family: "jquery-filer"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.icon-jfi-ban:before { content: "\f328"; } +.icon-jfi-calendar:before { content: "\f30b"; } +.icon-jfi-check:before { content: "\f2f6"; } +.icon-jfi-check-circle:before { content: "\f30c"; } +.icon-jfi-cloud-o:before { content: "\f329"; } +.icon-jfi-cloud-up-o:before { content: "\f32a"; } +.icon-jfi-comment:before { content: "\f32b"; } +.icon-jfi-comment-o:before { content: "\f30d"; } +.icon-jfi-download-o:before { content: "\f32c"; } +.icon-jfi-exclamation:before { content: "\f32d"; } +.icon-jfi-exclamation-circle:before { content: "\f32e"; } +.icon-jfi-exclamation-triangle:before { content: "\f32f"; } +.icon-jfi-external-link:before { content: "\f330"; } +.icon-jfi-eye:before { content: "\f2f7"; } +.icon-jfi-file:before { content: "\f31f"; } +.icon-jfi-file-audio:before { content: "\f331"; } +.icon-jfi-file-image:before { content: "\f332"; } +.icon-jfi-file-o:before { content: "\f31d"; } +.icon-jfi-file-text:before { content: "\f333"; } +.icon-jfi-file-video:before { content: "\f334"; } +.icon-jfi-files-o:before { content: "\f335"; } +.icon-jfi-folder:before { content: "\f31e"; } +.icon-jfi-heart:before { content: "\f2f8"; } +.icon-jfi-heart-o:before { content: "\f336"; } +.icon-jfi-history:before { content: "\f337"; } +.icon-jfi-infinite:before { content: "\f2fb"; } +.icon-jfi-info:before { content: "\f338"; } +.icon-jfi-info-circle:before { content: "\f339"; } +.icon-jfi-minus:before { content: "\f33a"; } +.icon-jfi-minus-circle:before { content: "\f33b"; } +.icon-jfi-paperclip:before { content: "\f33c"; } +.icon-jfi-pencil:before { content: "\f2ff"; } +.icon-jfi-plus:before { content: "\f311"; } +.icon-jfi-plus-circle:before { content: "\f312"; } +.icon-jfi-power-off:before { content: "\f33d"; } +.icon-jfi-question:before { content: "\f33e"; } +.icon-jfi-question-circle:before { content: "\f33f"; } +.icon-jfi-reload:before { content: "\f300"; } +.icon-jfi-settings:before { content: "\f340"; } +.icon-jfi-sort:before { content: "\f303"; } +.icon-jfi-times:before { content: "\f316"; } +.icon-jfi-times-circle:before { content: "\f317"; } +.icon-jfi-trash:before { content: "\f318"; } +.icon-jfi-upload-o:before { content: "\f341"; } +.icon-jfi-user:before { content: "\f307"; } +.icon-jfi-view-grid:before { content: "\f342"; } +.icon-jfi-view-list:before { content: "\f343"; } +.icon-jfi-zip:before { content: "\f344"; } diff --git a/resources/assets/fonts/jquery.filer-icons/jquery-filer.eot b/resources/assets/fonts/jquery.filer-icons/jquery-filer.eot new file mode 100644 index 0000000..74adf90 Binary files /dev/null and b/resources/assets/fonts/jquery.filer-icons/jquery-filer.eot differ diff --git a/resources/assets/fonts/jquery.filer-icons/jquery-filer.svg b/resources/assets/fonts/jquery.filer-icons/jquery-filer.svg new file mode 100644 index 0000000..e6e9377 --- /dev/null +++ b/resources/assets/fonts/jquery.filer-icons/jquery-filer.svg @@ -0,0 +1,283 @@ + + + + + +Created by FontForge 20120731 at Tue Jan 20 14:13:11 2015 + By Iulian Galciuc,,, +Created by Iulian Galciuc,,, with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/assets/fonts/jquery.filer-icons/jquery-filer.ttf b/resources/assets/fonts/jquery.filer-icons/jquery-filer.ttf new file mode 100644 index 0000000..3140fce Binary files /dev/null and b/resources/assets/fonts/jquery.filer-icons/jquery-filer.ttf differ diff --git a/resources/assets/fonts/jquery.filer-icons/jquery-filer.woff b/resources/assets/fonts/jquery.filer-icons/jquery-filer.woff new file mode 100644 index 0000000..0f4b5f7 Binary files /dev/null and b/resources/assets/fonts/jquery.filer-icons/jquery-filer.woff differ diff --git a/resources/css/app.css b/resources/css/app.css deleted file mode 100644 index e69de29..0000000 diff --git a/resources/css/bootstrap.min.css b/resources/css/bootstrap.min.css new file mode 100644 index 0000000..aac2e30 --- /dev/null +++ b/resources/css/bootstrap.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.5.3 + * Homepage: https://bootswatch.com + * Copyright 2012-2020 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.5.3 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import url(https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap);:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#d9534f;--orange:#fd7e14;--yellow:#f0ad4e;--green:#4bbf73;--teal:#20c997;--cyan:#1f9bcf;--white:#fff;--gray:#919aa1;--gray-dark:#343a40;--primary:#1a1a1a;--secondary:#fff;--success:#4bbf73;--info:#1f9bcf;--warning:#f0ad4e;--danger:#d9534f;--light:#fff;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:.875rem;font-weight:400;line-height:1.5;color:#55595c;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1a1a1a;text-decoration:none;background-color:transparent}a:hover{color:#000;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#919aa1;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:600;line-height:1.2;color:#1a1a1a}.h1,h1{font-size:2rem}.h2,h2{font-size:1.75rem}.h3,h3{font-size:1.5rem}.h4,h4{font-size:1.25rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.75rem}.lead{font-size:1.09375rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.09375rem}.blockquote-footer{display:block;font-size:80%;color:#919aa1}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #eceeef;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#919aa1}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#1a1a1a}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#1a1a1a}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.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-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#55595c}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid rgba(0,0,0,.05)}.table thead th{vertical-align:bottom;border-bottom:2px solid rgba(0,0,0,.05)}.table tbody+tbody{border-top:2px solid rgba(0,0,0,.05)}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid rgba(0,0,0,.05)}.table-bordered td,.table-bordered th{border:1px solid rgba(0,0,0,.05)}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#55595c;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#bfbfbf}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#888}.table-hover .table-primary:hover{background-color:#b2b2b2}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b2b2b2}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#fff}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#fff}.table-hover .table-secondary:hover{background-color:#f2f2f2}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#f2f2f2}.table-success,.table-success>td,.table-success>th{background-color:#cdedd8}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#a1deb6}.table-hover .table-success:hover{background-color:#bae6c9}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#bae6c9}.table-info,.table-info>td,.table-info>th{background-color:#c0e3f2}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#8bcbe6}.table-hover .table-info:hover{background-color:#abdaee}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdaee}.table-warning,.table-warning>td,.table-warning>th{background-color:#fbe8cd}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#f7d4a3}.table-hover .table-warning:hover{background-color:#f9ddb5}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f9ddb5}.table-danger,.table-danger>td,.table-danger>th{background-color:#f4cfce}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#eba6a3}.table-hover .table-danger:hover{background-color:#efbbb9}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#efbbb9}.table-light,.table-light>td,.table-light>th{background-color:#fff}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fff}.table-hover .table-light:hover{background-color:#f2f2f2}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f2f2f2}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#55595c;background-color:#f7f7f9;border-color:rgba(0,0,0,.05)}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + 1.5rem);padding:.75rem 1.5rem;font-size:.875rem;font-weight:400;line-height:1.5;color:#55595c;background-color:#f7f7f9;background-clip:padding-box;border:0 solid #ced4da;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #55595c}.form-control:focus{color:#55595c;background-color:#f7f7f9;border-color:#5a5a5a;outline:0;box-shadow:0 0 0 .2rem rgba(26,26,26,.25)}.form-control::-webkit-input-placeholder{color:#919aa1;opacity:1}.form-control::-moz-placeholder{color:#919aa1;opacity:1}.form-control:-ms-input-placeholder{color:#919aa1;opacity:1}.form-control::-ms-input-placeholder{color:#919aa1;opacity:1}.form-control::placeholder{color:#919aa1;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#55595c;background-color:#f7f7f9}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:.75rem;padding-bottom:.75rem;margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:2rem;padding-bottom:2rem;font-size:1.09375rem;line-height:1.5}.col-form-label-sm{padding-top:.5rem;padding-bottom:.5rem;font-size:.765625rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.75rem 0;margin-bottom:0;font-size:.875rem;line-height:1.5;color:#55595c;background-color:transparent;border:solid transparent;border-width:0 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + 1rem);padding:.5rem 1rem;font-size:.765625rem;line-height:1.5}.form-control-lg{height:calc(1.5em + 4rem);padding:2rem 2rem;font-size:1.09375rem;line-height:1.5}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#919aa1}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#4bbf73}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.765625rem;line-height:1.5;color:#fff;background-color:rgba(75,191,115,.9)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#4bbf73;padding-right:calc(1.5em + 1.5rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%234bbf73' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .375rem) center;background-size:calc(.75em + .75rem) calc(.75em + .75rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#4bbf73;box-shadow:0 0 0 .2rem rgba(75,191,115,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 1.5rem);background-position:top calc(.375em + .375rem) right calc(.375em + .375rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#4bbf73;padding-right:calc(.75em + 3.625rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 1.5rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%234bbf73' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #f7f7f9 no-repeat center right 2.5rem/calc(.75em + .75rem) calc(.75em + .75rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#4bbf73;box-shadow:0 0 0 .2rem rgba(75,191,115,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#4bbf73}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#4bbf73}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#4bbf73}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#71cc90;background-color:#71cc90}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(75,191,115,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#4bbf73}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#4bbf73}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#4bbf73;box-shadow:0 0 0 .2rem rgba(75,191,115,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#d9534f}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.765625rem;line-height:1.5;color:#fff;background-color:rgba(217,83,79,.9)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#d9534f;padding-right:calc(1.5em + 1.5rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23d9534f' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23d9534f' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .375rem) center;background-size:calc(.75em + .75rem) calc(.75em + .75rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#d9534f;box-shadow:0 0 0 .2rem rgba(217,83,79,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 1.5rem);background-position:top calc(.375em + .375rem) right calc(.375em + .375rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#d9534f;padding-right:calc(.75em + 3.625rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 1.5rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23d9534f' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23d9534f' stroke='none'/%3e%3c/svg%3e") #f7f7f9 no-repeat center right 2.5rem/calc(.75em + .75rem) calc(.75em + .75rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#d9534f;box-shadow:0 0 0 .2rem rgba(217,83,79,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#d9534f}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#d9534f}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#d9534f}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e27c79;background-color:#e27c79}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(217,83,79,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#d9534f}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#d9534f}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#d9534f;box-shadow:0 0 0 .2rem rgba(217,83,79,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:600;color:#55595c;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0 solid transparent;padding:.75rem 1.5rem;font-size:.875rem;line-height:1.5rem;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#55595c;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(26,26,26,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#1a1a1a;border-color:#1a1a1a}.btn-primary:hover{color:#fff;background-color:#070707;border-color:#010101}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#070707;border-color:#010101;box-shadow:0 0 0 .2rem rgba(60,60,60,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#1a1a1a;border-color:#1a1a1a}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#010101;border-color:#000}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(60,60,60,.5)}.btn-secondary{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-secondary:hover{color:#1a1a1a;background-color:#ececec;border-color:#e6e6e6}.btn-secondary.focus,.btn-secondary:focus{color:#1a1a1a;background-color:#ececec;border-color:#e6e6e6;box-shadow:0 0 0 .2rem rgba(221,221,221,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#1a1a1a;background-color:#e6e6e6;border-color:#dfdfdf}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(221,221,221,.5)}.btn-success{color:#fff;background-color:#4bbf73;border-color:#4bbf73}.btn-success:hover{color:#fff;background-color:#3ca861;border-color:#389f5c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#3ca861;border-color:#389f5c;box-shadow:0 0 0 .2rem rgba(102,201,136,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#4bbf73;border-color:#4bbf73}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#389f5c;border-color:#359556}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(102,201,136,.5)}.btn-info{color:#fff;background-color:#1f9bcf;border-color:#1f9bcf}.btn-info:hover{color:#fff;background-color:#1a82ae;border-color:#187aa3}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#1a82ae;border-color:#187aa3;box-shadow:0 0 0 .2rem rgba(65,170,214,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#1f9bcf;border-color:#1f9bcf}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#187aa3;border-color:#177198}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(65,170,214,.5)}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ed9d2b;border-color:#ec971f}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ed9d2b;border-color:#ec971f;box-shadow:0 0 0 .2rem rgba(242,185,105,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#ea9214}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(242,185,105,.5)}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#d23430;border-color:#c9302c}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#d23430;border-color:#c9302c;box-shadow:0 0 0 .2rem rgba(223,109,105,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#bf2e29}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(223,109,105,.5)}.btn-light{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-light:hover{color:#1a1a1a;background-color:#ececec;border-color:#e6e6e6}.btn-light.focus,.btn-light:focus{color:#1a1a1a;background-color:#ececec;border-color:#e6e6e6;box-shadow:0 0 0 .2rem rgba(221,221,221,.5)}.btn-light.disabled,.btn-light:disabled{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#1a1a1a;background-color:#e6e6e6;border-color:#dfdfdf}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(221,221,221,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#1a1a1a;border-color:#1a1a1a}.btn-outline-primary:hover{color:#fff;background-color:#1a1a1a;border-color:#1a1a1a}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(26,26,26,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#1a1a1a;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#1a1a1a;border-color:#1a1a1a}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(26,26,26,.5)}.btn-outline-secondary{color:#fff;border-color:#fff}.btn-outline-secondary:hover{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#fff;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-outline-success{color:#4bbf73;border-color:#4bbf73}.btn-outline-success:hover{color:#fff;background-color:#4bbf73;border-color:#4bbf73}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(75,191,115,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#4bbf73;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#4bbf73;border-color:#4bbf73}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(75,191,115,.5)}.btn-outline-info{color:#1f9bcf;border-color:#1f9bcf}.btn-outline-info:hover{color:#fff;background-color:#1f9bcf;border-color:#1f9bcf}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(31,155,207,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#1f9bcf;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#1f9bcf;border-color:#1f9bcf}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(31,155,207,.5)}.btn-outline-warning{color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(240,173,78,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(240,173,78,.5)}.btn-outline-danger{color:#d9534f;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(217,83,79,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(217,83,79,.5)}.btn-outline-light{color:#fff;border-color:#fff}.btn-outline-light:hover{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#fff;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#1a1a1a;background-color:#fff;border-color:#fff}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#1a1a1a;text-decoration:none}.btn-link:hover{color:#000;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#919aa1;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:2rem 2rem;font-size:1.09375rem;line-height:1.5;border-radius:0}.btn-group-sm>.btn,.btn-sm{padding:.5rem 1rem;font-size:.765625rem;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.875rem;color:#55595c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15)}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #f7f7f9}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#1a1a1a;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#0d0d0d;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#1a1a1a}.dropdown-item.disabled,.dropdown-item:disabled{color:#919aa1;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.765625rem;color:#919aa1;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#1a1a1a}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:0}.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.5rem;padding-left:1.5rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:0}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:0}.input-group-prepend{margin-right:0}.input-group-append{margin-left:0}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.75rem 1.5rem;margin-bottom:0;font-size:.875rem;font-weight:400;line-height:1.5;color:#55595c;text-align:center;white-space:nowrap;background-color:#eceeef;border:0 solid #ced4da}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 4rem)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:2rem 2rem;font-size:1.09375rem;line-height:1.5}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + 1rem)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:.765625rem;line-height:1.5}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:2.5rem}.custom-control{position:relative;z-index:1;display:block;min-height:1.3125rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.15625rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#1a1a1a;background-color:#1a1a1a}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(26,26,26,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#5a5a5a}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#737373;border-color:#737373}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#919aa1}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#eceeef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.15625rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#f7f7f9;border:#adb5bd solid 0}.custom-control-label::after{position:absolute;top:.15625rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#1a1a1a;background-color:#1a1a1a}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(26,26,26,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(26,26,26,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(26,26,26,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:.15625rem;left:-2.25rem;width:1rem;height:1rem;background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#f7f7f9;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(26,26,26,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + 1.5rem);padding:.75rem 2.5rem .75rem 1.5rem;font-size:.875rem;font-weight:400;line-height:1.5;color:#55595c;vertical-align:middle;background:#f7f7f9 url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 1.5rem center/8px 10px;border:0 solid #ced4da;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#5a5a5a;outline:0;box-shadow:0 0 0 .2rem rgba(26,26,26,.25)}.custom-select:focus::-ms-value{color:#55595c;background-color:#f7f7f9}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:1.5rem;background-image:none}.custom-select:disabled{color:#919aa1;background-color:#f7f7f9}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #55595c}.custom-select-sm{height:calc(1.5em + 1rem);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:.765625rem}.custom-select-lg{height:calc(1.5em + 4rem);padding-top:2rem;padding-bottom:2rem;padding-left:2rem;font-size:1.09375rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + 1.5rem);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + 1.5rem);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#5a5a5a;box-shadow:0 0 0 .2rem rgba(26,26,26,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#eceeef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + 1.5rem);padding:.75rem 1.5rem;font-weight:400;line-height:1.5;color:#55595c;background-color:#f7f7f9;border:0 solid #ced4da}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + 1.5rem);padding:.75rem 1.5rem;line-height:1.5;color:#55595c;content:"Browse";background-color:#eceeef;border-left:inherit}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(26,26,26,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(26,26,26,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(26,26,26,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#1a1a1a;border:0;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#737373}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#eceeef;border-color:transparent}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#1a1a1a;border:0;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#737373}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#eceeef;border-color:transparent}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#1a1a1a;border:0;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#737373}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#eceeef}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#eceeef}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#919aa1;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #eceeef}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#f7f7f9 #f7f7f9 #eceeef}.nav-tabs .nav-link.disabled{color:#919aa1;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#55595c;background-color:#fff;border-color:#eceeef #eceeef #fff}.nav-tabs .dropdown-menu{margin-top:-1px}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#1a1a1a}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:1.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.335938rem;padding-bottom:.335938rem;margin-right:1rem;font-size:1.09375rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.09375rem;line-height:1;background-color:transparent;border:1px solid transparent}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#1a1a1a}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#1a1a1a}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#1a1a1a}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:#1a1a1a}.navbar-light .navbar-toggler{color:rgba(0,0,0,.3);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.3%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.3)}.navbar-light .navbar-text a{color:#1a1a1a}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#1a1a1a}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#fff}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0}.accordion>.card>.card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:transparent}.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#919aa1;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#919aa1}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#1a1a1a;background-color:#fff;border:1px solid transparent}.page-link:hover{z-index:2;color:#000;text-decoration:none;background-color:#f7f7f9;border-color:transparent}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(26,26,26,.25)}.page-item:first-child .page-link{margin-left:0}.page-item.active .page-link{z-index:3;color:#fff;background-color:#1a1a1a;border-color:#1a1a1a}.page-item.disabled .page-link{color:#919aa1;pointer-events:none;cursor:auto;background-color:#fff;border-color:transparent}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.09375rem;line-height:1.5}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.765625rem;line-height:1.5}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em}.badge-primary{color:#fff;background-color:#1a1a1a}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#010101}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(26,26,26,.5)}.badge-secondary{color:#1a1a1a;background-color:#fff}a.badge-secondary:focus,a.badge-secondary:hover{color:#1a1a1a;background-color:#e6e6e6}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.badge-success{color:#fff;background-color:#4bbf73}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#389f5c}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(75,191,115,.5)}.badge-info{color:#fff;background-color:#1f9bcf}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#187aa3}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(31,155,207,.5)}.badge-warning{color:#fff;background-color:#f0ad4e}a.badge-warning:focus,a.badge-warning:hover{color:#fff;background-color:#ec971f}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(240,173,78,.5)}.badge-danger{color:#fff;background-color:#d9534f}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#c9302c}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(217,83,79,.5)}.badge-light{color:#1a1a1a;background-color:#fff}a.badge-light:focus,a.badge-light:hover{color:#1a1a1a;background-color:#e6e6e6}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#f7f7f9}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3.8125rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#0e0e0e;background-color:#d1d1d1;border-color:#bfbfbf}.alert-primary hr{border-top-color:#b2b2b2}.alert-primary .alert-link{color:#000}.alert-secondary{color:#858585;background-color:#fff;border-color:#fff}.alert-secondary hr{border-top-color:#f2f2f2}.alert-secondary .alert-link{color:#6c6c6c}.alert-success{color:#27633c;background-color:#dbf2e3;border-color:#cdedd8}.alert-success hr{border-top-color:#bae6c9}.alert-success .alert-link{color:#193e26}.alert-info{color:#10516c;background-color:#d2ebf5;border-color:#c0e3f2}.alert-info hr{border-top-color:#abdaee}.alert-info .alert-link{color:#093040}.alert-warning{color:#7d5a29;background-color:#fcefdc;border-color:#fbe8cd}.alert-warning hr{border-top-color:#f9ddb5}.alert-warning .alert-link{color:#573e1c}.alert-danger{color:#712b29;background-color:#f7dddc;border-color:#f4cfce}.alert-danger hr{border-top-color:#efbbb9}.alert-danger .alert-link{color:#4c1d1b}.alert-light{color:#858585;background-color:#fff;border-color:#fff}.alert-light hr{border-top-color:#f2f2f2}.alert-light .alert-link{color:#6c6c6c}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.65625rem;background-color:#f7f7f9}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#1a1a1a;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#55595c;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#55595c;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#55595c;background-color:#f7f7f9}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item.disabled,.list-group-item:disabled{color:#919aa1;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#1a1a1a;border-color:#1a1a1a}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#0e0e0e;background-color:#bfbfbf}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#0e0e0e;background-color:#b2b2b2}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#0e0e0e;border-color:#0e0e0e}.list-group-item-secondary{color:#858585;background-color:#fff}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#858585;background-color:#f2f2f2}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#858585;border-color:#858585}.list-group-item-success{color:#27633c;background-color:#cdedd8}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#27633c;background-color:#bae6c9}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#27633c;border-color:#27633c}.list-group-item-info{color:#10516c;background-color:#c0e3f2}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#10516c;background-color:#abdaee}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#10516c;border-color:#10516c}.list-group-item-warning{color:#7d5a29;background-color:#fbe8cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#7d5a29;background-color:#f9ddb5}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7d5a29;border-color:#7d5a29}.list-group-item-danger{color:#712b29;background-color:#f4cfce}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#712b29;background-color:#efbbb9}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#712b29;border-color:#712b29}.list-group-item-light{color:#858585;background-color:#fff}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#858585;background-color:#f2f2f2}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#858585;border-color:#858585}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.3125rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#919aa1;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #eceeef}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #eceeef}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.765625rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.765625rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2)}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:.875rem;color:#1a1a1a;background-color:#f7f7f7;border-bottom:1px solid #ebebeb}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#55595c}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#1a1a1a!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#010101!important}.bg-secondary{background-color:#fff!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#e6e6e6!important}.bg-success{background-color:#4bbf73!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#389f5c!important}.bg-info{background-color:#1f9bcf!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#187aa3!important}.bg-warning{background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#ec971f!important}.bg-danger{background-color:#d9534f!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#c9302c!important}.bg-light{background-color:#fff!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#e6e6e6!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #eceeef!important}.border-top{border-top:1px solid #eceeef!important}.border-right{border-right:1px solid #eceeef!important}.border-bottom{border-bottom:1px solid #eceeef!important}.border-left{border-left:1px solid #eceeef!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#1a1a1a!important}.border-secondary{border-color:#fff!important}.border-success{border-color:#4bbf73!important}.border-info{border-color:#1f9bcf!important}.border-warning{border-color:#f0ad4e!important}.border-danger{border-color:#d9534f!important}.border-light{border-color:#fff!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#1a1a1a!important}a.text-primary:focus,a.text-primary:hover{color:#000!important}.text-secondary{color:#fff!important}a.text-secondary:focus,a.text-secondary:hover{color:#d9d9d9!important}.text-success{color:#4bbf73!important}a.text-success:focus,a.text-success:hover{color:#328c51!important}.text-info{color:#1f9bcf!important}a.text-info:focus,a.text-info:hover{color:#15698c!important}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#df8a13!important}.text-danger{color:#d9534f!important}a.text-danger:focus,a.text-danger:hover{color:#b52b27!important}.text-light{color:#fff!important}a.text-light:focus,a.text-light:hover{color:#d9d9d9!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#55595c!important}.text-muted{color:#919aa1!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #eceeef!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:rgba(0,0,0,.05)}.table .thead-dark th{color:inherit;border-color:rgba(0,0,0,.05)}}.navbar{font-size:.765625rem;text-transform:uppercase;font-weight:600}.navbar-nav .nav-link{padding-top:.715rem;padding-bottom:.715rem}.navbar-brand{margin-right:2rem}.bg-primary{background-color:#1a1a1a!important}.bg-light{border:1px solid rgba(0,0,0,.1)}.bg-light.navbar-fixed-top{border-width:0 0 1px}.bg-light.navbar-bottom-top{border-width:1px 0 0}.nav-item{margin-right:2rem}.btn{font-size:.765625rem;text-transform:uppercase}.btn-group-sm>.btn,.btn-sm{font-size:10px}.btn-warning,.btn-warning:focus,.btn-warning:hover,.btn-warning:not([disabled]):not(.disabled):active{color:#fff}.btn-outline-secondary{border-color:#919aa1;color:#919aa1}.btn-outline-secondary:not([disabled]):not(.disabled):active,.btn-outline-secondary:not([disabled]):not(.disabled):focus,.btn-outline-secondary:not([disabled]):not(.disabled):hover{background-color:#ced4da;border-color:#ced4da;color:#fff}.btn-outline-secondary:not([disabled]):not(.disabled):focus{box-shadow:0 0 0 .2rem rgba(206,212,218,.5)}[class*=btn-outline-]{border-width:2px}.border-secondary{border:1px solid #ced4da!important}body{font-weight:200;letter-spacing:1px}h1,h2,h3,h4,h5,h6{text-transform:uppercase;letter-spacing:3px}.text-secondary{color:#55595c!important}th{font-size:.765625rem;text-transform:uppercase}.table td,.table th{padding:1.5rem}.table-sm td,.table-sm th{padding:.75rem}.custom-switch .custom-control-label::after{top:calc(.15625rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px)}.dropdown-menu{font-size:.765625rem;text-transform:none}.badge{padding-top:.28rem}.badge-pill{border-radius:10rem}.list-group-item .h1,.list-group-item .h2,.list-group-item .h3,.list-group-item .h4,.list-group-item .h5,.list-group-item .h6,.list-group-item h1,.list-group-item h2,.list-group-item h3,.list-group-item h4,.list-group-item h5,.list-group-item h6{color:inherit}.card-header,.card-title{color:inherit} \ No newline at end of file diff --git a/resources/css/jquery.filer.css b/resources/css/jquery.filer.css new file mode 100644 index 0000000..161c17e --- /dev/null +++ b/resources/css/jquery.filer.css @@ -0,0 +1,415 @@ +/*! + * CSS jQuery.filer + * Copyright (c) 2016 CreativeDream + * Version: 1.3 (14-Sep-2016) +*/ +@import url('../assets/fonts/jquery.filer-icons/jquery-filer.css'); + +/*------------------------- + Basic configurations +-------------------------*/ +.jFiler * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.jFiler { + font-family: sans-serif; + font-size: 14px; + color: #494949; +} + +/* Helpers */ +.jFiler ul.list-inline li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +.jFiler .pull-left { + float: left; +} + +.jFiler .pull-right { + float: right; +} + +/* File Icons */ +span.jFiler-icon-file { + position: relative; + display: block; + background: #e1e1e1 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAAEACAYAAADsqNl9AAAD5klEQVR42u3azUqUURjA8bHAEpIK+9hlRBGC0QfVustI+oAo2nQJgYGFFEUhJF1NUVAXEC6iSyhIDCoX5js9Z5xpXmxsRjOdmfP7wfPqwtWZ589xhqlUN2Y5Zi5mJmYi5lzMgZhdFbpavEb32sxsURSfq5mqrPPv52MexYxZrb4NIusoOgoiDudb/JiMGbZSWQSRbRSdBPEqZtQqZRdEllFU2rxPuB8zYI2yDSK7KNYKYinmlvURRG5RVNa4GW5aHUHkGEWrIKasjSByjWJ1EC+tjCByjqKy6qPVI1ZGEDlHUb4h7loXQeQeRSOILzF7rIsgco+iEcS0VRGEKFaCSB+znrQqghDFShDvrYkgRNEM4pk1EYQomkFctiaCEEUziDPWRBCiaAYxYk0EIYpmEIPWRBCiqAeBIEQhCEGIQhBsWxA9E4UNEYQoBCEIUQiC7giiq6OwIYIQhSAEIQpB0H1BdF0UNkQQohCEIEQhCLo7iFoUMZ8EgSC6JAobIghRCEIQohAEvRXEtkRhQwQhCkEIQhSCoHeD2LIobIggRCEIQYhCEPRHEP81ChsiCFEIQhCiEAT9F8SmR2FDBCEKQQhCFIKgv4PYlChsiCD6bZ7/SxQ2RBCiEIQgRCEI8gpiQ1HYEEGIQhCCEIUgyDeIjqOwIYIQhSAEIQpBsBLEKVGsHYUNcUuIQhCCMK2jsB2CEEUpCtshClOKwmYIwpSisBn5BjEqgj+jsBluCVMaWyEKIQiCUhCXhCAI3BKC4K9RXBeEIHBbCALvKwTBRuO4IQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyEi1Wh10ClBrYXd6jDgKqAVxMD3OOgqoBXE+PSYcBdSCuJIeM44CakHMpseco4BKpSiKDymI5Zgxx0Hmt8N4TDX9kjx0JGQexONyEPMxw46FTGPYF7NQDiKZdDRkGsSDRgTlIL7HHHU8ZBbD8ZjFVkEkr2MGHBOZxLAj5m05gNVBJNOOipzeSLcLIn0Me9tx0ecx3KnvetsgkiVR0Ocx/Gy1+GsF0bgppr2noI9C2BnzpNXN0EkQDW9ijjlOejyGEzHv2i17J0EkP2KmYvY6WnoshP31/3QWO1n0ToNoWKhfOeOOmi4P4XTM06Iovq5nwdcbxG/pm4Hp67IxV2MuxByKGfJSsMWLPxRzOOZizLWYF7GbHze6178AQI59RSRyAJkAAAAASUVORK5CYII=') no-repeat; + background-size: cover; + width: 57px; + height: 74px; + line-height: 90px; + text-align: center; + margin: 0 auto; + color: #fff; + font-size: 14px; + font-weight: bold; + overflow: hidden; +} + +span.jFiler-icon-file i[class*="icon-jfi-"] { + font-size: 24px; +} + +span.jFiler-icon-file.f-image { + background-color: #e15955; +} + +span.jFiler-icon-file.f-video { + background-color: #4183d7; +} + +span.jFiler-icon-file.f-audio { + background-color: #5bab6e; +} + +/* Progress Bar */ +.jFiler-jProgressBar { + height: 8px; + background: #f1f1f1; + margin-top: 3px; + margin-bottom: 0; + overflow: hidden; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.jFiler-jProgressBar .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #50A1E9; + box-sizing: border-box; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-transition: width 0.3s ease; + -moz-transition: width 0.3s ease; + -o-transition: width 0.3s ease; + transition: width 0.3s ease; +} + +.jFiler-jProgressBar .bar.dark { + background-color: #555; +} + +.jFiler-jProgressBar .bar.blue { + background-color: #428bca; +} + +.jFiler-jProgressBar .bar.green { + background-color: #5cb85c; +} + +.jFiler-jProgressBar .bar.orange { + background-color: #f7a923; +} + +.jFiler-jProgressBar .bar.red { + background-color: #d9534f; +} + +/* Thumbs */ +.jFiler-row:after, +.jFiler-item:after { + display: table; + line-height: 0; + content: ""; + clear: both; +} + +.jFiler-items ul { + margin: 0; + padding: 0; + list-style: none; +} + +/*------------------------- + Default Theme +-------------------------*/ +.jFiler-theme-default .jFiler-input { + position: relative; + display: block; + width: 400px; + height: 35px; + margin: 0 0 15px 0; + background: #fefefe; + border: 1px solid #cecece; + font-size: 12px; + font-family: sans-serif; + color: #888; + border-radius: 4px; + cursor: pointer; + overflow: hidden; + -webkit-box-shadow: rgba(0,0,0,.25) 0 4px 5px -5px inset; + -moz-box-shadow: rgba(0,0,0,.25) 0 4px 5px -5px inset; + box-shadow: rgba(0,0,0,.25) 0 4px 5px -5px inset; +} + +.jFiler-theme-default .jFiler-input.focused { + outline: none; + -webkit-box-shadow: 0 0 7px rgba(0,0,0,0.1); + -moz-box-shadow: 0 0 7px rgba(0,0,0,0.1); + box-shadow: 0 0 7px rgba(0,0,0,0.1); +} + +.jFiler-theme-default .jFiler-input.dragged { + border: 1px dashed #aaaaaa; + background: #f9f9f9; +} + +.jFiler-theme-default .jFiler-inpu.draggedt:hover { + background: #FFF8D0; +} + +.jFiler-theme-default .jFiler-input.dragged * { + pointer-events: none; +} + +.jFiler-theme-default .jFiler-input.dragged .jFiler-input-caption { + width: 100%; + text-align: center; +} + +.jFiler-theme-default .jFiler-input.dragged .jFiler-input-button { + display: none; +} + +.jFiler-theme-default .jFiler-input-caption { + display: block; + float: left; + height: 100%; + padding-top: 8px; + padding-left: 10px; + text-overflow: ellipsis; + overflow: hidden; +} + +.jFiler-theme-default .jFiler-input-button { + display: block; + float: right; + height: 100%; + padding-top: 8px; + padding-left: 15px; + padding-right: 15px; + border-left: 1px solid #ccc; + color: #666666; + text-align: center; + background-color: #fefefe; + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fefefe),to(#f1f1f1)); + background-image: -webkit-linear-gradient(top,#fefefe,#f1f1f1); + background-image: -o-linear-gradient(top,#fefefe,#f1f1f1); + background-image: linear-gradient(to bottom,#fefefe,#f1f1f1); + background-image: -moz-linear-gradient(top,#fefefe,#f1f1f1); + -webkit-transition: all .1s ease-out; + -moz-transition: all .1s ease-out; + -o-transition: all .1s ease-out; + transition: all .1s ease-out; +} + +.jFiler-theme-default .jFiler-input-button:hover { + -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.07); + -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.07); + box-shadow: inset 0 0 10px rgba(0,0,0,0.07); +} + +.jFiler-theme-default .jFiler-input-button:active { + background-image: -webkit-gradient(linear,0 0,0 100%,from(#f1f1f1),to(#fefefe)); + background-image: -webkit-linear-gradient(top,#f1f1f1,#fefefe); + background-image: -o-linear-gradient(top,#f1f1f1,#fefefe); + background-image: linear-gradient(to bottom,#f1f1f1,#fefefe); + background-image: -moz-linear-gradient(top,#f1f1f1,#fefefe); +} + +/*------------------------- + Thumbnails +-------------------------*/ +.jFiler-items-default .jFiler-items { + +} + +.jFiler-items-default .jFiler-item { + position: relative; + padding: 16px; + margin-bottom: 16px; + background: #f7f7f7; + color: #4d4d4c; +} + + +.jFiler-items-default .jFiler-item .jFiler-item-icon { + font-size: 32px; + color: #48A0DC; + + margin-right: 15px; + margin-top: -3px; +} + +.jFiler-items-default .jFiler-item .jFiler-item-title { + font-weight: bold; +} + +.jFiler-items-default .jFiler-item .jFiler-item-others { + font-size: 12px; + color: #777; + margin-left: -5px; + margin-right: -5px; +} + +.jFiler-items-default .jFiler-item .jFiler-item-others span { + padding-left: 5px; + padding-right: 5px; +} + +.jFiler-items-default .jFiler-item-assets { + position: absolute; + display: block; + right: 16px; + top: 50%; + margin-top: -10px; +} + +.jFiler-items-default .jFiler-item-assets a { + padding: 8px 9px 8px 12px; + cursor: pointer; + background: #fafafa; + color: #777; + border-radius: 4px; + border: 1px solid #e3e3e3 +} + +.jFiler-items-default .jFiler-item-assets .jFiler-item-trash-action:hover, +.jFiler-items-default .jFiler-item-assets .jFiler-item-trash-action:active { + color: #d9534f; +} + +.jFiler-items-default .jFiler-item-assets .jFiler-item-trash-action:active { + background: transparent; +} + +/* Thumbnails: Grid */ +.jFiler-items-grid .jFiler-item { + float: left; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container { + position: relative; + margin: 0 20px 30px 0; + padding: 10px; + border: 1px solid #e1e1e1; + border-radius: 3px; + background: #fff; + -webkit-box-shadow: 0px 0px 3px rgba(0,0,0,0.06); + -moz-box-shadow: 0px 0px 3px rgba(0,0,0,0.06); + box-shadow: 0px 0px 3px rgba(0,0,0,0.06); +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb { + position: relative; + width: 190px; + height: 145px; + min-height: 115px; + border: 1px solid #e1e1e1; + overflow: hidden; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb .jFiler-item-thumb-image { + width: 100%; + height: 100%; + text-align: center; +} + +.jFiler-item .jFiler-item-container .jFiler-item-thumb img { + max-width: none; + max-height: 100%; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb span.jFiler-icon-file { + margin-top: 32px; +} + +.jFiler-items-grid .jFiler-item-thumb-image.fi-loading { + background: url('data:image/gif;base64,R0lGODlhIwAjAMQAAP////f39+/v7+bm5t7e3tbW1s7OzsXFxb29vbW1ta2traWlpZycnJSUlIyMjISEhHt7e3Nzc2tra2NjY1paWlJSUkpKSkJCQjo6OjExMSkpKRkZGRAQEAAAAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBAAeACwAAAAAIwAjAAAF5CAgjmRpnmiqrmzrvnAsz3Rto4Fwm4EYLIweQHcTKAiAQOPRI0QKRcYiEGA4qI8K9HZoGAIOSOBgCdIGBeLCMUgoBJSJjsBAxAiKRSFAQBCVBwMKGRsNQi8DBwsJhyQVGxMKjTCJk0kPjDI5AlQqBAcICFstBQqmmScFGh0dHBaWKAIEBQQDKQEKDxEQCTMBA5Y/o5oDoZYCHB1PMgIHCQacwCPACRStDTEDBrYABQg5wAgGIg4YYjQCogEGB3wI3J2+oD0G42PfN2Pc7D2JRDb/+In4t8MHwYIIEypcyLChQ4YhAAAh+QQFBAAeACwIAAgAEwATAAAFlqAnjiKSjAFJBscgLos4NIQ6JggAKLHXSDWbp6CoLRgeg0ShGwkIKQ9iITggPJFHaqA4eAYIRK0a9SwK0spl0TQkvEIJJnIlCdDCRk4lEJIGBgcHRn4jBBkciROFKgkNDg51jCJBJJU2ARocD4xNAQsGCBMcGz2FAxwZKQwVDYVwEhwOI02MAxsceJMeOgwaJ7skCX0jIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwJAAcAEgAVAAAFjqAnjmJAnihgHChqCACAJKMyoMHBeggSJ40baoC4zTwFB6IlOiwLhkCDMUIYUAUSgiA4RCZLAXPkoDQOsfFosVNjDYaBQiRmWjaaDMTdXDAYbWMJQnwiGBoOBEwmIwVeGhhzKAJ+BBsXIgoSVCcEAxkbAw8enEwAARkaYqluAqliChlLY64aQrNjAT2MKCEAIfkEBQQAHgAsBwAIABQAFAAABZqgJ45jUQBkqorGgQqIsKqteCjyTLbAsBg6UoBA8CgSIoGhGGQNAoXG4zAaNBcPxalJQhS4KwGhUCQgRYHZQGKxVBpgD8CQUCiAYEQTpZpcGFYrBgw5HgkEBg4XFHoqFx10CwMZFCIIDwl8IwscFAQXGR4NGQo6BBocRRUYHgIWGEwqBxoPHgEWoYYXVCsBCTIBqzkHaVwHvCshACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcACAAVABQAAAWaoCeOpDECZKqKgRcY7bqanoHI6+EKSIHjCJ2oMPidCgIPQbHwGUkIBoLwJAEM1OpqQBgkC0yjwBGRRBQokfdXOASzo0MjqTrQUwQIpwM/QSYJKQoaHRUKHgtQSgwTEUIeDRcPSRQcHgiBFREiB1IkdAkaEgMUGAILFoE4AxkaRRIVLRIURTIGGQ0iExWcEzQyBzGwI05PV78rIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwHAAgAFAAUAAAFlaAnjmRBnmgqCip6kEGbDnJqvmJAsLVIDwgEoTc6JAy0k05VSIoKiSgipgoIaIFKZ8tBVBeNBgORkEwkDt6sYECSBosUwJRybDiqxuOgTmTwCAUKIwAHAwMJDw10CxUNMRIaBQcIAmhPCgYjVAcZDx4REx5lOCoWGCIPER4Bqi0FFwwiEBIxBg9DKpqpEVS5PQUFACohACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcACAAUABQAAAWRoCeOpEGeaCoGKmqOQlvKXgId4usR6DA+HA6kQDsxMB0Nr0hSTHxFAgJxIABogpiEI9rgVAiF2ICARCANVovAjsESKoKaNGBkMqrEojA/WDYSHgMIJAVZBwsKSwoSCyIOFx4FJg4LVwQHRCgVDQIOEAEHDi9XJwISFAIADA4iDJ1xEwoiDa2SDFA0rCO5NGwtIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwHAAgAEwAUAAAFj6AnisNonqeBLWg7GpwmtAENcc8s6ifyGKJMp1DyIFqNjecxUEiKLpGi4slATcBW4hkdDQ6HbHd048TELtah8XCwxqjAsXXdKSyWuuiAILwmGBBABzUiBDUFCQglCBAJIgsTBAQFAQpzAwZ1BREsCwweBQt+Lg8QNQpvCAqFJwMQc6mGjy6kHrI7cB4DeiIhACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcABwASABUAAAWXoCeOI0GQaBpUl5CSRZV4QrYN71hoWBBkGpdISAI4No2BhoNLHRijy8YQmQwOpJMC2BAgIh5fgJZKSDYWYg4FWZMMhkLT7XHYeAW6wrBgLGZ0KQZjgR4IEhFqJIAeBQ8UDQUCeSNzIwcNCCIJDwMDJwgGawSZAQgzBAiWIwELDSIHmh6xOQyiAKciV4oeAHO0IwB0ArweIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwHAAcAEAAVAAAFjKAnjuMwkKgnjFJVosSEeMGVrcc1j8TlehVMIIDh7EaMzMKDuTE4k4DHsCiIKJnCI0LYcE6ehMWyPDxGgshyZL5MUqID6uCAowsEwsouWlTGFAR8HgUJCglHgyNWigF0dXYzBAwPCoJgcAUKBnELAgKYcAObHgdyfIYiBQcAdgIJjAanrq0AsoojQyghACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcACAAUABQAAAWYoCeKwQhF5aiqA3SIlDVW7yoOlCRKlVhtNZtHYUkIKBfPYoNaFRADUUTWeAwyGYHHAFmIDhIJImBorBIFB6cDSZUnEGEA08k0UiPDQrsSTB58HgEDhEIqAHgIERESVoY2BAcIBwaPlh5Rl04KCnhnKwMJDFCelgMIBAAeT3hBNqoeAggFIgiaX7ZblZoBB5lbqoG3wzbCKyEAIfkEBQQAHgAsBwAHABUAEwAABZygJ46jIJBoSjZPqa6GGEmBZ0zx60Gt90QiSSb3QkgOHskkkMj0UAOkyCEhLBiey2X0SIwMLKRVAPAEHggCY8N5egiKB6OGAmwtC1UhQScFIgt9JAKCKQUICQkxBw2NCycqBhsdlBgBAwUGBgRlKgMPExMSgSSdKmQvBAgIOqwoAgeKkDopBgMiMbOutCgGSLe8IlIeSKbBI1LAKCEAIfkEBQQAHgAsAAAAAAEAAQAABQOgFwIAIfkEBQQAHgAsAAAAAAEAAQAABQOgFwIAIfkECQQAHgAsAAAAACMAIwAABbWgJ45kaZ5oqq5s675wLM90baPBvS6MTgoKgqjxEBEihZuAsRAxHKJHJXk7NAwBB8RzsPRqBYFo4RgkFALKxMhAxAiKBdXtAXgah4Eis2nIBgcLCSgVGxMKNYAoD4MzAgI5KgQHCAhULQUKmgmRJgUaIhwWLwIEBQQDKQEKDxEQCXYxnSUBcjapKAIcHUg+JgkUHRx+YB6zIw4YEMc2QiMBzDB0HgbGvifR19rb3N3e3+Dh4ikhADs=') no-repeat center; + width: 100%; + height: 100%; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + color: #fff; + background: rgba(76, 76, 77, 0.8); + opacity: 0; + filter: alpha(opacity=0); + z-index: 10; + overflow-y: auto; + -webkit-transition: all 0.12s; + -moz-transition: all 0.12s; + transition: all 0.12s; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb:hover .jFiler-item-thumb-overlay { + opacity: 1; + filter: aplpha(opacity(100)); +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-info { + display: table; + padding: 0 10px; + overflow: auto; + width: 100%; + height: 100%; + text-align: center; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-info .jFiler-item-title { + display: block; + font-weight: bold; + word-break: break-all; + line-height: 1; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-info .jFiler-item-others { + display: inline-block; + font-size: 10px; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets { + margin-top: 10px; + color: #999; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .text-success { + color: #3C763D +} + +.jFiler-items-grid .jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .text-error { + color: #A94442 +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .jFiler-jProgressBar { + width: 120px; + margin-left: -5px; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .jFiler-item-others { + font-size: 12px; +} + +.jFiler-items-grid .jFiler-item-trash-action:hover { + cursor: pointer; + color: #d9534f; +} diff --git a/resources/css/jquery.justified.css b/resources/css/jquery.justified.css new file mode 100644 index 0000000..321b96c --- /dev/null +++ b/resources/css/jquery.justified.css @@ -0,0 +1,12 @@ +.image-container{ + position: relative; +} +.photo-container{ + float: left; + position: relative; + overflow: hidden; +} +.image-thumb{ + position: relative; + background-color: #eee; +} \ No newline at end of file diff --git a/resources/css/justifiedGallery.min.css b/resources/css/justifiedGallery.min.css new file mode 100644 index 0000000..172dd8b --- /dev/null +++ b/resources/css/justifiedGallery.min.css @@ -0,0 +1,110 @@ +/*! + * justifiedGallery - v3.8.0 + * http://miromannino.github.io/Justified-Gallery/ + * Copyright (c) 2020 Miro Mannino + * Licensed under the MIT license. + */ +.justified-gallery { + width: 100%; + position: relative; + overflow: hidden; +} +.justified-gallery > a, +.justified-gallery > div, +.justified-gallery > figure { + position: absolute; + display: inline-block; + overflow: hidden; + /* background: #888888; To have gray placeholders while the gallery is loading with waitThumbnailsLoad = false */ + filter: "alpha(opacity=10)"; + opacity: 0.1; + margin: 0; + padding: 0; +} +.justified-gallery > a > img, +.justified-gallery > div > img, +.justified-gallery > figure > img, +.justified-gallery > a > a > img, +.justified-gallery > div > a > img, +.justified-gallery > figure > a > img, +.justified-gallery > a > svg, +.justified-gallery > div > svg, +.justified-gallery > figure > svg, +.justified-gallery > a > a > svg, +.justified-gallery > div > a > svg, +.justified-gallery > figure > a > svg { + position: absolute; + top: 50%; + left: 50%; + margin: 0; + padding: 0; + border: none; + filter: "alpha(opacity=0)"; + opacity: 0; +} +.justified-gallery > a > .jg-caption, +.justified-gallery > div > .jg-caption, +.justified-gallery > figure > .jg-caption { + display: none; + position: absolute; + bottom: 0; + padding: 5px; + background-color: #000000; + left: 0; + right: 0; + margin: 0; + color: white; + font-size: 12px; + font-weight: 300; + font-family: sans-serif; +} +.justified-gallery > a > .jg-caption.jg-caption-visible, +.justified-gallery > div > .jg-caption.jg-caption-visible, +.justified-gallery > figure > .jg-caption.jg-caption-visible { + display: initial; + filter: "alpha(opacity=70)"; + opacity: 0.7; + -webkit-transition: opacity 500ms ease-in; + -moz-transition: opacity 500ms ease-in; + -o-transition: opacity 500ms ease-in; + transition: opacity 500ms ease-in; +} +.justified-gallery > .jg-entry-visible { + filter: "alpha(opacity=100)"; + opacity: 1; + background: none; +} +.justified-gallery > .jg-entry-visible > img, +.justified-gallery > .jg-entry-visible > a > img, +.justified-gallery > .jg-entry-visible > svg, +.justified-gallery > .jg-entry-visible > a > svg { + filter: "alpha(opacity=100)"; + opacity: 1; + -webkit-transition: opacity 500ms ease-in; + -moz-transition: opacity 500ms ease-in; + -o-transition: opacity 500ms ease-in; + transition: opacity 500ms ease-in; +} +.justified-gallery > .jg-filtered { + display: none; +} +.justified-gallery > .jg-spinner { + position: absolute; + bottom: 0; + margin-left: -24px; + padding: 10px 0 10px 0; + left: 50%; + filter: "alpha(opacity=100)"; + opacity: 1; + overflow: initial; +} +.justified-gallery > .jg-spinner > span { + display: inline-block; + filter: "alpha(opacity=0)"; + opacity: 0; + width: 8px; + height: 8px; + margin: 0 4px 0 4px; + background-color: #000; + border-radius: 6px; +} diff --git a/resources/css/public.css b/resources/css/public.css new file mode 100644 index 0000000..eb88627 --- /dev/null +++ b/resources/css/public.css @@ -0,0 +1,25 @@ +#img { + background-image: url("/images/DSC08544.jpg"); + padding: 0px; + margin: 0px; + background-repeat: no-repeat; + background-size: cover; + height: 100% +} +#login { + + margin: 0px; + height: 100%; +} +.form-control { + margin-bottom: 10px; + margin-top: 10px; +} +.vertical-center { + margin: 0; + position: absolute; + width: calc(100% - 15px); + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} diff --git a/resources/css/theme.css b/resources/css/theme.css new file mode 100644 index 0000000..cf669cb --- /dev/null +++ b/resources/css/theme.css @@ -0,0 +1,7 @@ +body { + +} +.form-control { + margin-top: 5px; + margin-bottom: 5px; +} diff --git a/resources/css/themes/jquery.filer-dragdropbox-theme.css b/resources/css/themes/jquery.filer-dragdropbox-theme.css new file mode 100644 index 0000000..300fa48 --- /dev/null +++ b/resources/css/themes/jquery.filer-dragdropbox-theme.css @@ -0,0 +1,191 @@ +/*! + * CSS jQuery.filer + * Theme: DragDropBox + * Copyright (c) 2016 CreativeDream + * Version: 1.3 (14-Sep-2016) +*/ + +/*------------------------- + Input +-------------------------*/ +.jFiler-input-dragDrop { + display: block; + width: 343px; + margin: 0 auto 25px auto; + padding: 25px; + color: #97A1A8; + background: #F9FBFE; + border: 2px dashed #C8CBCE; + text-align: center; + -webkit-transition: box-shadow 0.3s, + border-color 0.3s; + -moz-transition: box-shadow 0.3s, + border-color 0.3s; + transition: box-shadow 0.3s, + border-color 0.3s; +} + +.jFiler .jFiler-input-dragDrop.dragged { + border-color: #aaa; + box-shadow: inset 0 0 20px rgba(0,0,0,.08); +} + +.jFiler .jFiler-input-dragDrop.dragged * { + pointer-events: none; +} + +.jFiler .jFiler-input-dragDrop.dragged .jFiler-input-icon { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.jFiler .jFiler-input-dragDrop.dragged .jFiler-input-text, +.jFiler .jFiler-input-dragDrop.dragged .jFiler-input-choose-btn { + filter: alpha(opacity=30); + opacity: 0.3; +} + +.jFiler-input-dragDrop .jFiler-input-icon { + font-size: 48px; + margin-top: -10px; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.jFiler-input-text h3 { + margin: 0; + font-size: 18px; +} + +.jFiler-input-text span { + font-size: 12px; +} + +.jFiler-input-choose-btn { + display: inline-block; + padding: 8px 14px; + outline: none; + cursor: pointer; + text-decoration: none; + text-align: center; + white-space: nowrap; + font-size: 12px; + font-weight: bold; + color: #8d9496; + border-radius: 3px; + border: 1px solid #c6c6c6; + vertical-align: middle; + *background-color: #fff; + box-shadow: 0px 1px 5px rgba(0,0,0,0.05); + -webkit-transition: all 0.2s; + -moz-transition: all 0.2s; + transition: all 0.2s; +} + +.jFiler-input-choose-btn:hover, +.jFiler-input-choose-btn:active { + color: inherit; +} + +.jFiler-input-choose-btn:active { + background-color: #f5f5f5; +} + +/* gray */ +.jFiler-input-choose-btn.gray { + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fcfcfc),to(#f5f5f5)); + background-image: -webkit-linear-gradient(top,#fcfcfc,#f5f5f5); + background-image: -o-linear-gradient(top,#fcfcfc,#f5f5f5); + background-image: linear-gradient(to bottom,#fcfcfc,#f5f5f5); + background-image: -moz-linear-gradient(top,#fcfcfc,#f5f5f5); +} + +.jFiler-input-choose-btn.gray:hover { + filter: alpha(opacity=87); + opacity: 0.87; +} + +.jFiler-input-choose-btn.gray:active { + background-color: #f5f5f5; + background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#fcfcfc)); + background-image: -webkit-linear-gradient(top,#f5f5f5,#fcfcfc); + background-image: -o-linear-gradient(top,#f5f5f5,#fcfcfc); + background-image: linear-gradient(to bottom,#f5f5f5,#fcfcfc); + background-image: -moz-linear-gradient(top,#f5f5f5,#fcfcfc); +} + +/* blue */ +.jFiler-input-choose-btn.blue { + color: #48A0DC; + border: 1px solid #48A0DC; +} + +.jFiler-input-choose-btn.blue:hover { + background: #48A0DC; +} + +.jFiler-input-choose-btn.blue:active { + background: #48A0DC; +} + +/* green */ +.jFiler-input-choose-btn.green { + color: #27ae60; + border: 1px solid #27ae60; +} + +.jFiler-input-choose-btn.green:hover { + background: #27ae60; +} + +.jFiler-input-choose-btn.green:active { + background: #27ae60; +} + +/* red */ +.jFiler-input-choose-btn.red { + color: #ed5a5a; + border: 1px solid #ed5a5a; +} + +.jFiler-input-choose-btn.red:hover { + background: #ed5a5a; +} + +.jFiler-input-choose-btn.red:active { + background: #E05252; +} + +/* black */ +.jFiler-input-choose-btn.black { + color: #555; + border: 1px solid #555; +} + +.jFiler-input-choose-btn.black:hover { + background: #555; +} + +.jFiler-input-choose-btn.black:active { + background: #333; +} + +.jFiler-input-choose-btn.blue:hover, +.jFiler-input-choose-btn.green:hover, +.jFiler-input-choose-btn.red:hover, +.jFiler-input-choose-btn.black:hover { + border-color: transparent; + color: #fff; +} + +.jFiler-input-choose-btn.blue:active, +.jFiler-input-choose-btn.green:active, +.jFiler-input-choose-btn.red:active, +.jFiler-input-choose-btn.black:active { + border-color: transparent; + color: #fff; + filter: alpha(opacity=87); + opacity: 0.87; +} diff --git a/resources/images/DSC08544.jpg b/resources/images/DSC08544.jpg new file mode 100644 index 0000000..7756fd7 Binary files /dev/null and b/resources/images/DSC08544.jpg differ diff --git a/resources/images/lens-3114729_1920.jpg b/resources/images/lens-3114729_1920.jpg new file mode 100644 index 0000000..f050fbb Binary files /dev/null and b/resources/images/lens-3114729_1920.jpg differ diff --git a/resources/js/app.js b/resources/js/app.js deleted file mode 100644 index 40c55f6..0000000 --- a/resources/js/app.js +++ /dev/null @@ -1 +0,0 @@ -require('./bootstrap'); diff --git a/resources/js/bootstrap.bundle.min.js b/resources/js/bootstrap.bundle.min.js new file mode 100644 index 0000000..ef603da --- /dev/null +++ b/resources/js/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.5.3 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};l.jQueryDetection(),i.default.fn.emulateTransitionEnd=s,i.default.event.special[l.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var u="alert",f=i.default.fn[u],d=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=l.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=l.getTransitionDurationFromElement(t);i.default(t).one(l.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.alert");o||(o=new t(this),n.data("bs.alert",o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',d._handleDismiss(new d)),i.default.fn[u]=d._jQueryInterface,i.default.fn[u].Constructor=d,i.default.fn[u].noConflict=function(){return i.default.fn[u]=f,d._jQueryInterface};var c=i.default.fn.button,h=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector('input:not([type="hidden"])');if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass("active")}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&i.default(this._element).toggleClass("active"))},e.dispose=function(){i.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data("bs.button");r||(r=new t(this),o.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();i.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector('input:not([type="hidden"])');if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||h._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=i.default(t.target).closest(".btn")[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(l.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?"next":"prev";this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(m),i.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},v,t),l.typeCheckConfig(p,t,_),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass("active")}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(".active.carousel-item"),u=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f);var h=i.default.Event("slid.bs.carousel",{relatedTarget:f,direction:r,from:u,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),l.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=parseInt(f.getAttribute("data-interval"),10);p?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=p):this._config.interval=this._config.defaultInterval||this._config.interval;var m=l.getTransitionDurationFromElement(s);i.default(s).one(l.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass("active"),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(m)}else i.default(s).removeClass("active"),i.default(f).addClass("active"),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.carousel"),o=a({},v,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=l.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data("bs.carousel").to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return v}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",y._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!this._isTransitioning&&!i.default(this._element).hasClass("show")&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains("collapse")}))).length&&(e=null),!(e&&(n=i.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data("bs.collapse",null));var a=this._getDimension();i.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),u=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,(function(){i.default(o._element).removeClass("collapsing").addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(u),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass("show")){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",l.reflow(this._element),i.default(this._element).addClass("collapsing").removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}();var k=D&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),N))}};function A(t){return t&&"[object Function]"==={}.toString.call(t)}function I(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function O(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function x(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=I(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:x(O(t))}function j(t){return t&&t.referenceNode?t.referenceNode:t}var L=D&&!(!window.MSInputMethodContext||!document.documentMode),P=D&&/MSIE 10/.test(navigator.userAgent);function F(t){return 11===t?L:10===t?P:L||P}function R(t){if(!t)return document.documentElement;for(var e=F(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===I(n,"position")?R(n):n:t?t.ownerDocument.documentElement:document.documentElement}function H(t){return null!==t.parentNode?H(t.parentNode):t}function M(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&R(a.firstElementChild)!==a?R(l):l;var u=H(t);return u.host?M(u.host,e):M(t,H(e).host)}function B(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function q(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=B(e,"top"),o=B(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function Q(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function W(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],F(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function U(t){var e=t.body,n=t.documentElement,i=F(10)&&getComputedStyle(n);return{height:W("Height",e,n,i),width:W("Width",e,n,i)}}var V=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Y=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=F(10),o="HTML"===e.nodeName,r=G(t),a=G(e),s=x(t),l=I(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=K({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=q(d,e)),d}function J(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=$(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:B(n),s=e?0:B(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return K(l)}function Z(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===I(t,"position"))return!0;var n=O(t);return!!n&&Z(n)}function tt(t){if(!t||!t.parentElement||F())return document.documentElement;for(var e=t.parentElement;e&&"none"===I(e,"transform");)e=e.parentElement;return e||document.documentElement}function et(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?tt(t):M(t,j(e));if("viewport"===i)r=J(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=x(O(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=$(s,a,o);if("HTML"!==s.nodeName||Z(a))r=l;else{var u=U(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function nt(t){return t.width*t.height}function it(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=et(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return X({key:t},s[t],{area:nt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function ot(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?tt(e):M(e,j(n));return $(n,o,i)}function rt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function at(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function st(t,e,n){n=n.split("-")[0];var i=rt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[at(s)],o}function lt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ut(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=lt(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&A(n)&&(e.offsets.popper=K(e.offsets.popper),e.offsets.reference=K(e.offsets.reference),e=n(e,t))})),e}function ft(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ot(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=it(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=st(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ut(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function dt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function ct(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Tt.indexOf(t),i=Tt.slice(n+1).concat(Tt.slice(0,n));return e?i.reverse():i}var St="flip",Dt="clockwise",Nt="counterclockwise";function kt(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(lt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return K(s)[e]/100*r}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){_t(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var At={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:z({},l,r[l]),end:z({},l,r[l]+r[u]-a[u])};t.offsets.popper=X({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=_t(+n)?[+n,0]:kt(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||R(t.instance.popper);t.instance.reference===n&&(n=R(n));var i=ct("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=et(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),z({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=X({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!wt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=rt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=K(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=I(t.instance.popper),v=parseFloat(g["margin"+f]),_=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-v-_;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(z(n={},d,Math.round(b)),z(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(dt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=et(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=at(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case St:a=[i,o];break;case Dt:a=Ct(i);break;case Nt:a=Ct(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=at(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=X({},t.offsets.popper,st(t.instance.popper,t.offsets.reference,t.placement)),t=ut(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=at(e),t.offsets.popper=K(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!wt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=lt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};V(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=k(this.update.bind(this)),this.options=X({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(X({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=X({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return X({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&A(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Y(t,[{key:"update",value:function(){return ft.call(this)}},{key:"destroy",value:function(){return ht.call(this)}},{key:"enableEventListeners",value:function(){return gt.call(this)}},{key:"disableEventListeners",value:function(){return vt.call(this)}}]),t}();It.Utils=("undefined"!=typeof window?window:global).PopperUtils,It.placements=Et,It.Defaults=At;var Ot="dropdown",xt=i.default.fn[Ot],jt=new RegExp("38|40|27"),Lt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},Pt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},Ft=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")){var e=i.default(this._menu).hasClass("show");t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass("disabled")||i.default(this._menu).hasClass("show"))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof It)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var a=this._element;"parent"===this._config.reference?a=r:l.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new It(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass("show"),i.default(r).toggleClass("show").trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")&&i.default(this._menu).hasClass("show")){var e={relatedTarget:this._element},n=i.default.Event("hide.bs.dropdown",e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass("show"),i.default(o).toggleClass("show").trigger(i.default.Event("hidden.bs.dropdown",e)))}},e.dispose=function(){i.default.removeData(this._element,"bs.dropdown"),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),l.typeCheckConfig(Ot,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(".dropdown-menu"))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass("dropdown-menu-right")?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass("dropdown-menu-right")&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data("bs.dropdown",n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var o=l.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(l.TRANSITION_END),i.default(this._element).one(l.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||i.default(t._element).one(l.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}else this.hide()},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass("fade"),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&l.reflow(this._element),i.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=l.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(l.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):i.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&e._triggerBackdropTransition()})),n&&l.reflow(this._backdrop),i.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var o=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass("fade")){var a=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Qt,popperConfig:null},Zt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},te=function(){function t(t,e){if("undefined"==typeof It)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=l.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=l.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass("fade");var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,u=this._getAttachment(s);this.addAttachmentClass(u);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new It(this.element,r,this._getPopperConfig(u)),i.default(r).addClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(i.default(this.tip).hasClass("fade")){var c=l.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(l.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass("fade")){var a=l.getTransitionDurationFromElement(n);i.default(n).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Vt(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:l.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return $t[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),i.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Kt.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l.typeCheckConfig(Yt,t,this.constructor.DefaultType),t.sanitize&&(t.template=Vt(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Xt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tooltip"),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data("bs.tooltip",o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return Jt}},{key:"NAME",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Zt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Gt}}]),t}();i.default.fn[Yt]=te._jQueryInterface,i.default.fn[Yt].Constructor=te,i.default.fn[Yt].noConflict=function(){return i.default.fn[Yt]=zt,te._jQueryInterface};var ee="popover",ne=i.default.fn[ee],ie=new RegExp("(^|\\s)bs-popover\\S+","g"),oe=a({},te.Default,{placement:"right",trigger:"click",content:"",template:''}),re=a({},te.DefaultType,{content:"(string|element|function)"}),ae={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},se=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(ie);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return oe}},{key:"NAME",get:function(){return ee}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return ae}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return re}}]),o}(te);i.default.fn[ee]=se._jQueryInterface,i.default.fn[ee].Constructor=se,i.default.fn[ee].noConflict=function(){return i.default.fn[ee]=ne,se._jQueryInterface};var le="scrollspy",ue=i.default.fn[le],fe={offset:10,method:"auto",target:""},de={offset:"number",method:"string",target:"(string|element)"},ce=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,o="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=l.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,"bs.scrollspy"),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},fe,"object"==typeof t&&t?t:{})).target&&l.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=l.getUID(le),i.default(t.target).attr("id",e)),t.target="#"+e}return l.typeCheckConfig(le,t,de),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),u=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(u),!u.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(".active"):i.default(e).find("> li > .active"))[0],a=n&&r&&i.default(r).hasClass("fade"),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var u=l.getTransitionDurationFromElement(r);i.default(r).removeClass("show").one(l.TRANSITION_END,s).emulateTransitionEnd(u)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass("active");var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(i.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),l.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&i.default(t.parentNode).hasClass("dropdown-menu")){var r=i.default(t).closest(".dropdown")[0];if(r){var a=[].slice.call(r.querySelectorAll(".dropdown-toggle"));i.default(a).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tab");if(o||(o=new t(this),n.data("bs.tab",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),pe._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=pe._jQueryInterface,i.default.fn.tab.Constructor=pe,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=he,pe._jQueryInterface};var me=i.default.fn.toast,ge={animation:"boolean",autohide:"boolean",delay:"number"},ve={animation:!0,autohide:!0,delay:500},_e=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),l.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),i.default(this._element).off("click.dismiss.bs.toast"),i.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},ve,i.default(this._element).data(),"object"==typeof t&&t?t:{}),l.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.toast");if(o||(o=new t(this,"object"==typeof e&&e),n.data("bs.toast",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"DefaultType",get:function(){return ge}},{key:"Default",get:function(){return ve}}]),t}();i.default.fn.toast=_e._jQueryInterface,i.default.fn.toast.Constructor=_e,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=me,_e._jQueryInterface},t.Alert=d,t.Button=h,t.Carousel=y,t.Collapse=S,t.Dropdown=Ft,t.Modal=Bt,t.Popover=se,t.Scrollspy=ce,t.Tab=pe,t.Toast=_e,t.Tooltip=te,t.Util=l,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js deleted file mode 100644 index 6922577..0000000 --- a/resources/js/bootstrap.js +++ /dev/null @@ -1,28 +0,0 @@ -window._ = require('lodash'); - -/** - * We'll load the axios HTTP library which allows us to easily issue requests - * to our Laravel back-end. This library automatically handles sending the - * CSRF token as a header based on the value of the "XSRF" token cookie. - */ - -window.axios = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - -/** - * Echo exposes an expressive API for subscribing to channels and listening - * for events that are broadcast by Laravel. Echo and event broadcasting - * allows your team to easily build robust real-time web applications. - */ - -// import Echo from 'laravel-echo'; - -// window.Pusher = require('pusher-js'); - -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: process.env.MIX_PUSHER_APP_KEY, -// cluster: process.env.MIX_PUSHER_APP_CLUSTER, -// forceTLS: true -// }); diff --git a/resources/js/jquery-3.5.1.min.js b/resources/js/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/resources/js/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="",m.option=!!le.lastChild;var he={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function Le(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===ft.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Fe(m.pixelPosition,function(e,t){if(t)return t=We(e,n),Ie.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0'); + f._set('props'); + s.prop("jFiler").boxEl = p = s.closest(b); + f._changeInput(); + }, + _bindInput: function() { + if (n.changeInput && o.length > 0) { + o.on("click", f._clickHandler); + } + s.on({ + "focus": function() { + o.addClass('focused'); + }, + "blur": function() { + o.removeClass('focused'); + }, + "change": f._onChange + }); + if (n.dragDrop) { + n.dragDrop.dragContainer.on("drag dragstart dragend dragover dragenter dragleave drop", function(e) { + e.preventDefault(); + e.stopPropagation(); + }); + n.dragDrop.dragContainer.on("drop", f._dragDrop.drop); + n.dragDrop.dragContainer.on("dragover", f._dragDrop.dragEnter); + n.dragDrop.dragContainer.on("dragleave", f._dragDrop.dragLeave); + } + if (n.uploadFile && n.clipBoardPaste) { + $(window) + .on("paste", f._clipboardPaste); + } + }, + _unbindInput: function(all) { + if (n.changeInput && o.length > 0) { + o.off("click", f._clickHandler); + } + + if (all) { + s.off("change", f._onChange); + if (n.dragDrop) { + n.dragDrop.dragContainer.off("drop", f._dragDrop.drop); + n.dragDrop.dragContainer.off("dragover", f._dragDrop.dragEnter); + n.dragDrop.dragContainer.off("dragleave", f._dragDrop.dragLeave); + } + if (n.uploadFile && n.clipBoardPaste) { + $(window) + .off("paste", f._clipboardPaste); + } + } + }, + _clickHandler: function() { + if (!n.uploadFile && n.addMore && s.val().length != 0) { + f._unbindInput(true); + var elem = $(''); + var attributes = s.prop("attributes"); + $.each(attributes, function() { + if (this.name == "required") return; + elem.attr(this.name, this.value); + }); + s.after(elem); + sl.push(elem); + s = elem; + f._bindInput(); + f._set('props'); + } + s.click() + }, + _applyAttrSettings: function() { + var d = ["name", "limit", "maxSize", "fileMaxSize", "extensions", "changeInput", "showThumbs", "appendTo", "theme", "addMore", "excludeName", "files", "uploadUrl", "uploadData", "options"]; + for (var k in d) { + var j = "data-jfiler-" + d[k]; + if (f._assets.hasAttr(j)) { + switch (d[k]) { + case "changeInput": + case "showThumbs": + case "addMore": + n[d[k]] = (["true", "false"].indexOf(s.attr(j)) > -1 ? s.attr(j) == "true" : s.attr(j)); + break; + case "extensions": + n[d[k]] = s.attr(j) + .replace(/ /g, '') + .split(","); + break; + case "uploadUrl": + if (n.uploadFile) n.uploadFile.url = s.attr(j); + break; + case "uploadData": + if (n.uploadFile) n.uploadFile.data = JSON.parse(s.attr(j)); + break; + case "files": + case "options": + n[d[k]] = JSON.parse(s.attr(j)); + break; + default: + n[d[k]] = s.attr(j); + } + s.removeAttr(j); + } + } + }, + _changeInput: function() { + f._applyAttrSettings(); + n.beforeRender != null && typeof n.beforeRender == "function" ? n.beforeRender(p, s) : null; + if (n.theme) { + p.addClass('jFiler-theme-' + n.theme); + } + if (s.get(0) + .tagName.toLowerCase() != "input" && s.get(0) + .type != "file") { + o = s; + s = $(""); + s.css({ + position: "absolute", + left: "-9999px", + top: "-9999px", + "z-index": "-9999" + }); + p.prepend(s); + f._isGn = s; + } else { + if (n.changeInput) { + switch (typeof n.changeInput) { + case "boolean": + o = $('
' + n.captions.feedback + '
' + n.captions.button + '
"'); + break; + case "string": + case "object": + o = $(n.changeInput); + break; + case "function": + o = $(n.changeInput(p, s, n)); + break; + } + s.after(o); + s.css({ + position: "absolute", + left: "-9999px", + top: "-9999px", + "z-index": "-9999" + }); + } + } + s.prop("jFiler").newInputEl = o; + if (n.dragDrop) { + n.dragDrop.dragContainer = n.dragDrop.dragContainer ? $(n.dragDrop.dragContainer) : o; + } + if (!n.limit || (n.limit && n.limit >= 2)) { + s.attr("multiple", "multiple"); + s.attr("name") + .slice(-2) != "[]" ? s.attr("name", s.attr("name") + "[]") : null; + } + if (!s.attr("disabled") && !n.disabled) { + n.disabled = false; + f._bindInput(); + p.removeClass("jFiler-disabled"); + } else { + n.disabled = true; + f._unbindInput(true); + p.addClass("jFiler-disabled"); + } + if (n.files) { + f._append(false, { + files: n.files + }); + } + n.afterRender != null && typeof n.afterRender == "function" ? n.afterRender(l, p, o, s) : null; + }, + _clear: function() { + f.files = null; + s.prop("jFiler") + .files = null; + if (!n.uploadFile && !n.addMore) { + f._reset(); + } + f._set('feedback', (f._itFl && f._itFl.length > 0 ? f._itFl.length + ' ' + n.captions.feedback2 : n.captions.feedback)); + n.onEmpty != null && typeof n.onEmpty == "function" ? n.onEmpty(p, o, s) : null + }, + _reset: function(a) { + if (!a) { + if (!n.uploadFile && n.addMore) { + for (var i = 0; i < sl.length; i++) { + sl[i].remove(); + } + sl = []; + f._unbindInput(true); + if (f._isGn) { + s = f._isGn; + } else { + s = $(r); + } + f._bindInput(); + } + f._set('input', ''); + } + f._itFl = []; + f._itFc = null; + f._ajFc = 0; + f._set('props'); + s.prop("jFiler") + .files_list = f._itFl; + s.prop("jFiler") + .current_file = f._itFc; + f._itFr = []; + p.find("input[name^='jfiler-items-exclude-']:hidden") + .remove(); + l.fadeOut("fast", function() { + $(this) + .remove(); + }); + s.prop("jFiler").listEl = l = $(); + }, + _set: function(element, value) { + switch (element) { + case 'input': + s.val(value); + break; + case 'feedback': + if (o.length > 0) { + o.find('.jFiler-input-caption span') + .html(value); + } + break; + case 'props': + if (!s.prop("jFiler")) { + s.prop("jFiler", { + options: n, + listEl: l, + boxEl: p, + newInputEl: o, + inputEl: s, + files: f.files, + files_list: f._itFl, + current_file: f._itFc, + append: function(data) { + return f._append(false, { + files: [data] + }); + }, + enable: function() { + if (!n.disabled) + return; + n.disabled = false; + s.removeAttr("disabled"); + p.removeClass("jFiler-disabled"); + f._bindInput(); + }, + disable: function() { + if (n.disabled) + return; + n.disabled = true; + p.addClass("jFiler-disabled"); + f._unbindInput(true); + }, + remove: function(id) { + f._remove(null, { + binded: true, + data: { + id: id + } + }); + return true; + }, + reset: function() { + f._reset(); + f._clear(); + return true; + }, + retry: function(data) { + return f._retryUpload(data); + } + }) + } + } + }, + _filesCheck: function() { + var s = 0; + if (n.limit && f.files.length + f._itFl.length > n.limit) { + n.dialogs.alert(f._assets.textParse(n.captions.errors.filesLimit)); + return false + } + for (var t = 0; t < f.files.length; t++) { + var file = f.files[t], + x = file.name.split(".") + .pop() + .toLowerCase(), + m = { + name: file.name, + size: file.size, + size2: f._assets.bytesToSize(file.size), + type: file.type, + ext: x + }; + if (n.extensions != null && $.inArray(x, n.extensions) == -1 && $.inArray(m.type, n.extensions) == -1) { + n.dialogs.alert(f._assets.textParse(n.captions.errors.filesType, m)); + return false; + } + if ((n.maxSize != null && f.files[t].size > n.maxSize * 1048576) || (n.fileMaxSize != null && f.files[t].size > n.fileMaxSize * 1048576)) { + n.dialogs.alert(f._assets.textParse(n.captions.errors.filesSize, m)); + return false; + } + if (file.size == 4096 && file.type.length == 0) { + n.dialogs.alert(f._assets.textParse(n.captions.errors.folderUpload, m)); + return false; + } + if (n.onFileCheck != null && typeof n.onFileCheck == "function" ? n.onFileCheck(m, n, f._assets.textParse) === false : null) { + return false; + } + + if ((n.uploadFile || n.addMore) && !n.allowDuplicates) { + var m = f._itFl.filter(function(a, b) { + if (a.file.name == file.name && a.file.size == file.size && a.file.type == file.type && (file.lastModified ? a.file.lastModified == file.lastModified : true)) { + return true; + } + }); + if (m.length > 0) { + if (f.files.length == 1) { + return false; + } else { + file._pendRemove = true; + } + } + } + + s += f.files[t].size + } + if (n.maxSize != null && s >= Math.round(n.maxSize * 1048576)) { + n.dialogs.alert(f._assets.textParse(n.captions.errors.filesSizeAll)); + return false + } + return true; + }, + _thumbCreator: { + create: function(i) { + var file = f.files[i], + id = (f._itFc ? f._itFc.id : i), + name = file.name, + size = file.size, + url = file.file, + type = file.type ? file.type.split("/", 1) : "" + .toString() + .toLowerCase(), + ext = name.indexOf(".") != -1 ? name.split(".") + .pop() + .toLowerCase() : "", + progressBar = n.uploadFile ? '
' + n.templates.progressBar + '
' : '', + opts = { + id: id, + name: name, + size: size, + size2: f._assets.bytesToSize(size), + url: url, + type: type, + extension: ext, + icon: f._assets.getIcon(ext, type), + icon2: f._thumbCreator.generateIcon({ + type: type, + extension: ext + }), + image: '
', + progressBar: progressBar, + _appended: file._appended + }, + html = ""; + if (file.opts) { + opts = $.extend({}, file.opts, opts); + } + html = $(f._thumbCreator.renderContent(opts)) + .attr("data-jfiler-index", id); + html.get(0) + .jfiler_id = id; + f._thumbCreator.renderFile(file, html, opts); + if (file.forList) { + return html; + } + f._itFc.html = html; + html.hide()[n.templates.itemAppendToEnd ? "appendTo" : "prependTo"](l.find(n.templates._selectors.list)) + .show(); + if (!file._appended) { + f._onSelect(i); + } + }, + renderContent: function(opts) { + return f._assets.textParse((opts._appended ? n.templates.itemAppend : n.templates.item), opts); + }, + renderFile: function(file, html, opts) { + if (html.find('.jFiler-item-thumb-image') + .length == 0) { + return false; + } + if (file.file && opts.type == "image") { + var g = '', + m = html.find('.jFiler-item-thumb-image.fi-loading'); + $(g) + .error(function() { + g = f._thumbCreator.generateIcon(opts); + html.addClass('jFiler-no-thumbnail'); + m.removeClass('fi-loading') + .html(g); + }) + .load(function() { + m.removeClass('fi-loading') + .html(g); + }); + return true; + } + if (window.File && window.FileList && window.FileReader && opts.type == "image" && opts.size < 1e+7) { + var y = new FileReader; + y.onload = function(e) { + var m = html.find('.jFiler-item-thumb-image.fi-loading'); + if (n.templates.canvasImage) { + var canvas = document.createElement('canvas'), + context = canvas.getContext('2d'), + img = new Image(); + + img.onload = function() { + var height = m.height(), + width = m.width(), + heightRatio = img.height / height, + widthRatio = img.width / width, + optimalRatio = heightRatio < widthRatio ? heightRatio : widthRatio, + optimalHeight = img.height / optimalRatio, + optimalWidth = img.width / optimalRatio, + steps = Math.ceil(Math.log(img.width / optimalWidth) / Math.log(2)); + + canvas.height = height; + canvas.width = width; + + if (img.width < canvas.width || img.height < canvas.height || steps <= 1) { + var x = img.width < canvas.width ? canvas.width / 2 - img.width / 2 : img.width > canvas.width ? -(img.width - canvas.width) / 2 : 0, + y = img.height < canvas.height ? canvas.height / 2 - img.height / 2 : 0 + context.drawImage(img, x, y, img.width, img.height); + } else { + var oc = document.createElement('canvas'), + octx = oc.getContext('2d'); + oc.width = img.width * 0.5; + oc.height = img.height * 0.5; + octx.fillStyle = "#fff"; + octx.fillRect(0, 0, oc.width, oc.height); + octx.drawImage(img, 0, 0, oc.width, oc.height); + octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5); + + context.drawImage(oc, optimalWidth > canvas.width ? optimalWidth - canvas.width : 0, 0, oc.width * 0.5, oc.height * 0.5, 0, 0, optimalWidth, optimalHeight); + } + m.removeClass('fi-loading').html(''); + } + img.onerror = function() { + html.addClass('jFiler-no-thumbnail'); + m.removeClass('fi-loading') + .html(f._thumbCreator.generateIcon(opts)); + } + img.src = e.target.result; + } else { + m.removeClass('fi-loading').html(''); + } + } + y.readAsDataURL(file); + } else { + var g = f._thumbCreator.generateIcon(opts), + m = html.find('.jFiler-item-thumb-image.fi-loading'); + html.addClass('jFiler-no-thumbnail'); + m.removeClass('fi-loading') + .html(g); + } + }, + generateIcon: function(obj) { + var m = new Array(3); + if (obj && obj.type && obj.type[0] && obj.extension) { + switch (obj.type[0]) { + case "image": + m[0] = "f-image"; + m[1] = "" + break; + case "video": + m[0] = "f-video"; + m[1] = "" + break; + case "audio": + m[0] = "f-audio"; + m[1] = "" + break; + default: + m[0] = "f-file f-file-ext-" + obj.extension; + m[1] = (obj.extension.length > 0 ? "." + obj.extension : ""); + m[2] = 1 + } + } else { + m[0] = "f-file"; + m[1] = (obj.extension && obj.extension.length > 0 ? "." + obj.extension : ""); + m[2] = 1 + } + var el = '' + m[1] + ''; + if (m[2] == 1) { + var c = f._assets.text2Color(obj.extension); + if (c) { + var j = $(el) + .appendTo("body"); + + j.css('background-color', f._assets.text2Color(obj.extension)); + el = j.prop('outerHTML'); + j.remove(); + } + } + return el; + }, + _box: function(params) { + if (n.beforeShow != null && typeof n.beforeShow == "function" ? !n.beforeShow(f.files, l, p, o, s) : false) { + return false + } + if (l.length < 1) { + if (n.appendTo) { + var appendTo = $(n.appendTo); + } else { + var appendTo = p; + } + appendTo.find('.jFiler-items') + .remove(); + l = $('
'); + s.prop("jFiler").listEl = l; + l.append(f._assets.textParse(n.templates.box)) + .appendTo(appendTo); + l.on('click', n.templates._selectors.remove, function(e) { + e.preventDefault(); + var m = [params ? params.remove.event : e, params ? params.remove.el : $(this).closest(n.templates._selectors.item)], + c = function(a) { + f._remove(m[0], m[1]); + }; + if (n.templates.removeConfirmation) { + n.dialogs.confirm(n.captions.removeConfirmation, c); + } else { + c(); + } + }); + } + for (var i = 0; i < f.files.length; i++) { + if (!f.files[i]._appended) f.files[i]._choosed = true; + f._addToMemory(i); + f._thumbCreator.create(i); + } + } + }, + _upload: function(i) { + var c = f._itFl[i], + el = c.html, + formData = new FormData(); + formData.append(s.attr('name'), c.file, (c.file.name ? c.file.name : false)); + if (n.uploadFile.data != null && $.isPlainObject(typeof(n.uploadFile.data) == "function" ? n.uploadFile.data(c.file) : n.uploadFile.data)) { + for (var k in n.uploadFile.data) { + formData.append(k, n.uploadFile.data[k]) + } + } + + f._ajax.send(el, formData, c); + }, + _ajax: { + send: function(el, formData, c) { + c.ajax = $.ajax({ + url: n.uploadFile.url, + data: formData, + type: n.uploadFile.type, + enctype: n.uploadFile.enctype, + xhr: function() { + var myXhr = $.ajaxSettings.xhr(); + if (myXhr.upload) { + myXhr.upload.addEventListener("progress", function(e) { + f._ajax.progressHandling(e, el) + }, false) + } + return myXhr + }, + complete: function(jqXHR, textStatus) { + c.ajax = false; + f._ajFc++; + + if (n.uploadFile.synchron && c.id + 1 < f._itFl.length) { + f._upload(c.id + 1); + } + + if (f._ajFc >= f.files.length) { + f._ajFc = 0; + s.get(0).value = ""; + n.uploadFile.onComplete != null && typeof n.uploadFile.onComplete == "function" ? n.uploadFile.onComplete(l, p, o, s, jqXHR, textStatus) : null; + } + }, + beforeSend: function(jqXHR, settings) { + return n.uploadFile.beforeSend != null && typeof n.uploadFile.beforeSend == "function" ? n.uploadFile.beforeSend(el, l, p, o, s, c.id, jqXHR, settings) : true; + }, + success: function(data, textStatus, jqXHR) { + c.uploaded = true; + n.uploadFile.success != null && typeof n.uploadFile.success == "function" ? n.uploadFile.success(data, el, l, p, o, s, c.id, textStatus, jqXHR) : null + }, + error: function(jqXHR, textStatus, errorThrown) { + c.uploaded = false; + n.uploadFile.error != null && typeof n.uploadFile.error == "function" ? n.uploadFile.error(el, l, p, o, s, c.id, jqXHR, textStatus, errorThrown) : null + }, + statusCode: n.uploadFile.statusCode, + cache: false, + contentType: false, + processData: false + }); + return c.ajax; + }, + progressHandling: function(e, el) { + if (e.lengthComputable) { + var t = Math.round(e.loaded * 100 / e.total) + .toString(); + n.uploadFile.onProgress != null && typeof n.uploadFile.onProgress == "function" ? n.uploadFile.onProgress(t, el, l, p, o, s) : null; + el.find('.jFiler-jProgressBar') + .find(n.templates._selectors.progressBar) + .css("width", t + "%") + } + } + }, + _dragDrop: { + dragEnter: function(e) { + clearTimeout(f._dragDrop._drt); + n.dragDrop.dragContainer.addClass('dragged'); + f._set('feedback', n.captions.drop); + n.dragDrop.dragEnter != null && typeof n.dragDrop.dragEnter == "function" ? n.dragDrop.dragEnter(e, o, s, p) : null; + }, + dragLeave: function(e) { + clearTimeout(f._dragDrop._drt); + f._dragDrop._drt = setTimeout(function(e) { + if (!f._dragDrop._dragLeaveCheck(e)) { + f._dragDrop.dragLeave(e); + return false; + } + n.dragDrop.dragContainer.removeClass('dragged'); + f._set('feedback', n.captions.feedback); + n.dragDrop.dragLeave != null && typeof n.dragDrop.dragLeave == "function" ? n.dragDrop.dragLeave(e, o, s, p) : null; + }, 100, e); + }, + drop: function(e) { + clearTimeout(f._dragDrop._drt); + n.dragDrop.dragContainer.removeClass('dragged'); + f._set('feedback', n.captions.feedback); + if (e && e.originalEvent && e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files.length > 0) { + f._onChange(e, e.originalEvent.dataTransfer.files); + } + n.dragDrop.drop != null && typeof n.dragDrop.drop == "function" ? n.dragDrop.drop(e.originalEvent.dataTransfer.files, e, o, s, p) : null; + }, + _dragLeaveCheck: function(e) { + var related = $(e.currentTarget), + insideEls = 0; + if (!related.is(o)) { + insideEls = o.find(related).length; + + if (insideEls > 0) { + debugger; + return false; + } + } + return true; + } + }, + _clipboardPaste: function(e, fromDrop) { + if (!fromDrop && (!e.originalEvent.clipboardData && !e.originalEvent.clipboardData.items)) { + return + } + if (fromDrop && (!e.originalEvent.dataTransfer && !e.originalEvent.dataTransfer.items)) { + return + } + if (f._clPsePre) { + return + } + var items = (fromDrop ? e.originalEvent.dataTransfer.items : e.originalEvent.clipboardData.items), + b64toBlob = function(b64Data, contentType, sliceSize) { + contentType = contentType || ''; + sliceSize = sliceSize || 512; + var byteCharacters = atob(b64Data); + var byteArrays = []; + for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { + var slice = byteCharacters.slice(offset, offset + sliceSize); + var byteNumbers = new Array(slice.length); + for (var i = 0; i < slice.length; i++) { + byteNumbers[i] = slice.charCodeAt(i); + } + var byteArray = new Uint8Array(byteNumbers); + byteArrays.push(byteArray); + } + var blob = new Blob(byteArrays, { + type: contentType + }); + return blob; + }; + if (items) { + for (var i = 0; i < items.length; i++) { + if (items[i].type.indexOf("image") !== -1 || items[i].type.indexOf("text/uri-list") !== -1) { + if (fromDrop) { + try { + window.atob(e.originalEvent.dataTransfer.getData("text/uri-list") + .toString() + .split(',')[1]); + } catch (e) { + return; + } + } + var blob = (fromDrop ? b64toBlob(e.originalEvent.dataTransfer.getData("text/uri-list") + .toString() + .split(',')[1], "image/png") : items[i].getAsFile()); + blob.name = Math.random() + .toString(36) + .substring(5); + blob.name += blob.type.indexOf("/") != -1 ? "." + blob.type.split("/")[1].toString() + .toLowerCase() : ".png"; + f._onChange(e, [blob]); + f._clPsePre = setTimeout(function() { + delete f._clPsePre + }, 1000); + } + } + } + }, + _onSelect: function(i) { + if (n.uploadFile && !$.isEmptyObject(n.uploadFile)) { + if (!n.uploadFile.synchron || (n.uploadFile.synchron && $.grep(f._itFl, function(a) { + return a.ajax + }).length == 0)) { + f._upload(f._itFc.id) + } + } + if (f.files[i]._pendRemove) { + f._itFc.html.hide(); + f._remove(null, { + binded: true, + data: { + id: f._itFc.id + } + }); + } + n.onSelect != null && typeof n.onSelect == "function" ? n.onSelect(f.files[i], f._itFc.html, l, p, o, s) : null; + if (i + 1 >= f.files.length) { + n.afterShow != null && typeof n.afterShow == "function" ? n.afterShow(l, p, o, s) : null + } + }, + _onChange: function(e, d) { + if (!d) { + if (!s.get(0) + .files || typeof s.get(0) + .files == "undefined" || s.get(0) + .files.length == 0) { + if (!n.uploadFile && !n.addMore) { + f._set('input', ''); + f._clear(); + } + return false + } + f.files = s.get(0) + .files; + } else { + if (!d || d.length == 0) { + f._set('input', ''); + f._clear(); + return false + } + f.files = d; + } + if (!n.uploadFile && !n.addMore) { + f._reset(true); + } + s.prop("jFiler") + .files = f.files; + if (!f._filesCheck() || (n.beforeSelect != null && typeof n.beforeSelect == "function" ? !n.beforeSelect(f.files, l, p, o, s) : false)) { + f._set('input', ''); + f._clear(); + if (n.addMore && sl.length > 0) { + f._unbindInput(true); + sl[sl.length - 1].remove(); + sl.splice(sl.length - 1, 1); + s = sl.length > 0 ? sl[sl.length - 1] : $(r); + f._bindInput(); + } + return false + } + f._set('feedback', f.files.length + f._itFl.length + ' ' + n.captions.feedback2); + if (n.showThumbs) { + f._thumbCreator._box(); + } else { + for (var i = 0; i < f.files.length; i++) { + f.files[i]._choosed = true; + f._addToMemory(i); + f._onSelect(i); + } + } + }, + _append: function(e, data) { + var files = (!data ? false : data.files); + if (!files || files.length <= 0) { + return; + } + f.files = files; + s.prop("jFiler") + .files = f.files; + if (n.showThumbs) { + for (var i = 0; i < f.files.length; i++) { + f.files[i]._appended = true; + } + f._thumbCreator._box(); + } + }, + _getList: function(e, data) { + var files = (!data ? false : data.files); + if (!files || files.length <= 0) { + return; + } + f.files = files; + s.prop("jFiler") + .files = f.files; + if (n.showThumbs) { + var returnData = []; + for (var i = 0; i < f.files.length; i++) { + f.files[i].forList = true; + returnData.push(f._thumbCreator.create(i)); + } + if (data.callback) { + data.callback(returnData, l, p, o, s); + } + } + }, + _retryUpload: function(e, data) { + var id = parseInt(typeof data == "object" ? data.attr("data-jfiler-index") : data), + obj = f._itFl.filter(function(value, key) { + return value.id == id; + }); + if (obj.length > 0) { + if (n.uploadFile && !$.isEmptyObject(n.uploadFile) && !obj[0].uploaded) { + f._itFc = obj[0]; + s.prop("jFiler") + .current_file = f._itFc; + f._upload(id); + return true; + } + } else { + return false; + } + }, + _remove: function(e, el) { + if (el.binded) { + if (typeof(el.data.id) != "undefined") { + el = l.find(n.templates._selectors.item + "[data-jfiler-index='" + el.data.id + "']"); + if (el.length == 0) { + return false + } + } + if (el.data.el) { + el = el.data.el; + } + } + var excl_input = function(val) { + var input = p.find("input[name^='jfiler-items-exclude-']:hidden") + .first(); + + if (input.length == 0) { + input = $(''); + input.appendTo(p); + } + + if (val && $.isArray(val)) { + val = JSON.stringify(val); + input.val(val); + } + }, + callback = function(el, id) { + var item = f._itFl[id], + val = []; + + if (item.file._choosed || item.file._appended || item.uploaded) { + f._itFr.push(item); + + var m = f._itFl.filter(function(a) { + return a.file.name == item.file.name; + }); + + for (var i = 0; i < f._itFr.length; i++) { + if (n.addMore && f._itFr[i] == item && m.length > 0) { + f._itFr[i].remove_name = m.indexOf(item) + "://" + f._itFr[i].file.name; + } + val.push(f._itFr[i].remove_name ? f._itFr[i].remove_name : f._itFr[i].file.name); + } + } + excl_input(val); + f._itFl.splice(id, 1); + if (f._itFl.length < 1) { + f._reset(); + f._clear(); + } else { + f._set('feedback', f._itFl.length + ' ' + n.captions.feedback2); + } + el.fadeOut("fast", function() { + $(this) + .remove(); + }); + }; + + var attrId = el.get(0) + .jfiler_id || el.attr('data-jfiler-index'), + id = null; + + for (var key in f._itFl) { + if (key === 'length' || !f._itFl.hasOwnProperty(key)) continue; + if (f._itFl[key].id == attrId) { + id = key; + } + } + if (!f._itFl.hasOwnProperty(id)) { + return false + } + if (f._itFl[id].ajax) { + f._itFl[id].ajax.abort(); + callback(el, id); + return; + } + if (n.onRemove != null && typeof n.onRemove == "function" ? n.onRemove(el, f._itFl[id].file, id, l, p, o, s) !== false : true) { + callback(el, id); + } + }, + _addToMemory: function(i) { + f._itFl.push({ + id: f._itFl.length, + file: f.files[i], + html: $(), + ajax: false, + uploaded: false, + }); + if (n.addMore || f.files[i]._appended) f._itFl[f._itFl.length - 1].input = s; + f._itFc = f._itFl[f._itFl.length - 1]; + s.prop("jFiler") + .files_list = f._itFl; + s.prop("jFiler") + .current_file = f._itFc; + }, + _assets: { + bytesToSize: function(bytes) { + if (bytes == 0) return '0 Byte'; + var k = 1000; + var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + var i = Math.floor(Math.log(bytes) / Math.log(k)); + return (bytes / Math.pow(k, i)) + .toPrecision(3) + ' ' + sizes[i]; + }, + hasAttr: function(attr, el) { + var el = (!el ? s : el), + a = el.attr(attr); + if (!a || typeof a == "undefined") { + return false; + } else { + return true; + } + }, + getIcon: function(ext, type) { + var types = ["audio", "image", "text", "video"]; + if ($.inArray(type, types) > -1) { + return ''; + } + return ''; + }, + textParse: function(text, opts) { + opts = $.extend({}, { + limit: n.limit, + maxSize: n.maxSize, + fileMaxSize: n.fileMaxSize, + extensions: n.extensions ? n.extensions.join(',') : null, + }, (opts && $.isPlainObject(opts) ? opts : {}), n.options); + switch (typeof(text)) { + case "string": + return text.replace(/\{\{fi-(.*?)\}\}/g, function(match, a) { + a = a.replace(/ /g, ''); + if (a.match(/(.*?)\|limitTo\:(\d+)/)) { + return a.replace(/(.*?)\|limitTo\:(\d+)/, function(match, a, b) { + var a = (opts[a] ? opts[a] : ""), + str = a.substring(0, b); + str = (a.length > str.length ? str.substring(0, str.length - 3) + "..." : str); + return str; + }); + } else { + return (opts[a] ? opts[a] : ""); + } + }); + break; + case "function": + return text(opts); + break; + default: + return text; + } + }, + text2Color: function(str) { + if (!str || str.length == 0) { + return false + } + for (var i = 0, hash = 0; i < str.length; hash = str.charCodeAt(i++) + ((hash << 5) - hash)); + for (var i = 0, colour = "#"; i < 3; colour += ("00" + ((hash >> i++ * 2) & 0xFF) + .toString(16)) + .slice(-2)); + return colour; + } + }, + files: null, + _itFl: [], + _itFc: null, + _itFr: [], + _itPl: [], + _ajFc: 0 + } + + s.on("filer.append", function(e, data) { + f._append(e, data) + }).on("filer.remove", function(e, data) { + data.binded = true; + f._remove(e, data); + }).on("filer.reset", function(e) { + f._reset(); + f._clear(); + return true; + }).on("filer.generateList", function(e, data) { + return f._getList(e, data) + }).on("filer.retry", function(e, data) { + return f._retryUpload(e, data) + }); + + f.init(); + + return this; + }); + }; + $.fn.filer.defaults = { + limit: null, + maxSize: null, + fileMaxSize: null, + extensions: null, + changeInput: true, + showThumbs: false, + appendTo: null, + theme: 'default', + templates: { + box: '
    ', + item: '
  • {{fi-icon}}
    {{fi-name | limitTo:30}}
    size: {{fi-size2}}type: {{fi-extension}}{{fi-progressBar}}
  • ', + itemAppend: '
  • {{fi-icon}}
    {{fi-name | limitTo:35}}
    size: {{fi-size2}}type: {{fi-extension}}
  • ', + progressBar: '
    ', + itemAppendToEnd: false, + removeConfirmation: true, + canvasImage: true, + _selectors: { + list: '.jFiler-items-list', + item: '.jFiler-item', + progressBar: '.bar', + remove: '.jFiler-item-trash-action' + } + }, + files: null, + uploadFile: null, + dragDrop: null, + addMore: false, + allowDuplicates: false, + clipBoardPaste: true, + excludeName: null, + beforeRender: null, + afterRender: null, + beforeShow: null, + beforeSelect: null, + onSelect: null, + onFileCheck: null, + afterShow: null, + onRemove: null, + onEmpty: null, + options: null, + dialogs: { + alert: function(text) { + return alert(text); + }, + confirm: function(text, callback) { + confirm(text) ? callback() : null; + } + }, + captions: { + button: "Choose Files", + feedback: "Choose files To Upload", + feedback2: "files were chosen", + drop: "Drop file here to Upload", + removeConfirmation: "Are you sure you want to remove this file?", + errors: { + filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.", + filesType: "Only Images are allowed to be uploaded.", + filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-fileMaxSize}} MB.", + filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB.", + folderUpload: "You are not allowed to upload folders." + } + } + } +})(jQuery); diff --git a/resources/js/jquery.filer.min.js b/resources/js/jquery.filer.min.js new file mode 100644 index 0000000..3054c6b --- /dev/null +++ b/resources/js/jquery.filer.min.js @@ -0,0 +1,8 @@ +/*! + * jQuery.filer minified + * Copyright (c) 2016 CreativeDream + * Website: https://github.com/CreativeDream/jquery.filer + * Version: 1.3 (14-Sep-2016) + * Requires: jQuery v1.7.1 or later + */ +!function(a){"use strict";a.fn.filer=function(b){return this.each(function(c,d){var e=a(d),f=".jFiler",g=a(),h=a(),i=a(),j=[],k=a.isFunction(b)?b(e,a.fn.filer.defaults):b,l=k&&a.isPlainObject(k)?a.extend(!0,{},a.fn.filer.defaults,k):a.fn.filer.defaults,m={init:function(){e.wrap('
    '),m._set("props"),e.prop("jFiler").boxEl=g=e.closest(f),m._changeInput()},_bindInput:function(){l.changeInput&&h.length>0&&h.on("click",m._clickHandler),e.on({focus:function(){h.addClass("focused")},blur:function(){h.removeClass("focused")},change:m._onChange}),l.dragDrop&&(l.dragDrop.dragContainer.on("drag dragstart dragend dragover dragenter dragleave drop",function(a){a.preventDefault(),a.stopPropagation()}),l.dragDrop.dragContainer.on("drop",m._dragDrop.drop),l.dragDrop.dragContainer.on("dragover",m._dragDrop.dragEnter),l.dragDrop.dragContainer.on("dragleave",m._dragDrop.dragLeave)),l.uploadFile&&l.clipBoardPaste&&a(window).on("paste",m._clipboardPaste)},_unbindInput:function(b){l.changeInput&&h.length>0&&h.off("click",m._clickHandler),b&&(e.off("change",m._onChange),l.dragDrop&&(l.dragDrop.dragContainer.off("drop",m._dragDrop.drop),l.dragDrop.dragContainer.off("dragover",m._dragDrop.dragEnter),l.dragDrop.dragContainer.off("dragleave",m._dragDrop.dragLeave)),l.uploadFile&&l.clipBoardPaste&&a(window).off("paste",m._clipboardPaste))},_clickHandler:function(){if(!l.uploadFile&&l.addMore&&0!=e.val().length){m._unbindInput(!0);var b=a(''),c=e.prop("attributes");a.each(c,function(){"required"!=this.name&&b.attr(this.name,this.value)}),e.after(b),j.push(b),e=b,m._bindInput(),m._set("props")}e.click()},_applyAttrSettings:function(){var a=["name","limit","maxSize","fileMaxSize","extensions","changeInput","showThumbs","appendTo","theme","addMore","excludeName","files","uploadUrl","uploadData","options"];for(var b in a){var c="data-jfiler-"+a[b];if(m._assets.hasAttr(c)){switch(a[b]){case"changeInput":case"showThumbs":case"addMore":l[a[b]]=["true","false"].indexOf(e.attr(c))>-1?"true"==e.attr(c):e.attr(c);break;case"extensions":l[a[b]]=e.attr(c).replace(/ /g,"").split(",");break;case"uploadUrl":l.uploadFile&&(l.uploadFile.url=e.attr(c));break;case"uploadData":l.uploadFile&&(l.uploadFile.data=JSON.parse(e.attr(c)));break;case"files":case"options":l[a[b]]=JSON.parse(e.attr(c));break;default:l[a[b]]=e.attr(c)}e.removeAttr(c)}}},_changeInput:function(){if(m._applyAttrSettings(),null!=l.beforeRender&&"function"==typeof l.beforeRender?l.beforeRender(g,e):null,l.theme&&g.addClass("jFiler-theme-"+l.theme),"input"!=e.get(0).tagName.toLowerCase()&&"file"!=e.get(0).type)h=e,e=a(''),e.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"}),g.prepend(e),m._isGn=e;else if(l.changeInput){switch(typeof l.changeInput){case"boolean":h=a('
    '+l.captions.feedback+'
    '+l.captions.button+'
    "');break;case"string":case"object":h=a(l.changeInput);break;case"function":h=a(l.changeInput(g,e,l))}e.after(h),e.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"})}e.prop("jFiler").newInputEl=h,l.dragDrop&&(l.dragDrop.dragContainer=l.dragDrop.dragContainer?a(l.dragDrop.dragContainer):h),(!l.limit||l.limit&&l.limit>=2)&&(e.attr("multiple","multiple"),"[]"!=e.attr("name").slice(-2)?e.attr("name",e.attr("name")+"[]"):null),e.attr("disabled")||l.disabled?(l.disabled=!0,m._unbindInput(!0),g.addClass("jFiler-disabled")):(l.disabled=!1,m._bindInput(),g.removeClass("jFiler-disabled")),l.files&&m._append(!1,{files:l.files}),null!=l.afterRender&&"function"==typeof l.afterRender?l.afterRender(i,g,h,e):null},_clear:function(){m.files=null,e.prop("jFiler").files=null,l.uploadFile||l.addMore||m._reset(),m._set("feedback",m._itFl&&m._itFl.length>0?m._itFl.length+" "+l.captions.feedback2:l.captions.feedback),null!=l.onEmpty&&"function"==typeof l.onEmpty?l.onEmpty(g,h,e):null},_reset:function(b){if(!b){if(!l.uploadFile&&l.addMore){for(var c=0;c0&&h.find(".jFiler-input-caption span").html(b);break;case"props":e.prop("jFiler")||e.prop("jFiler",{options:l,listEl:i,boxEl:g,newInputEl:h,inputEl:e,files:m.files,files_list:m._itFl,current_file:m._itFc,append:function(a){return m._append(!1,{files:[a]})},enable:function(){l.disabled&&(l.disabled=!1,e.removeAttr("disabled"),g.removeClass("jFiler-disabled"),m._bindInput())},disable:function(){l.disabled||(l.disabled=!0,g.addClass("jFiler-disabled"),m._unbindInput(!0))},remove:function(a){return m._remove(null,{binded:!0,data:{id:a}}),!0},reset:function(){return m._reset(),m._clear(),!0},retry:function(a){return m._retryUpload(a)}})}},_filesCheck:function(){var b=0;if(l.limit&&m.files.length+m._itFl.length>l.limit)return l.dialogs.alert(m._assets.textParse(l.captions.errors.filesLimit)),!1;for(var c=0;c1048576*l.maxSize||null!=l.fileMaxSize&&m.files[c].size>1048576*l.fileMaxSize)return l.dialogs.alert(m._assets.textParse(l.captions.errors.filesSize,f)),!1;if(4096==d.size&&0==d.type.length)return l.dialogs.alert(m._assets.textParse(l.captions.errors.folderUpload,f)),!1;if(null!=l.onFileCheck&&"function"==typeof l.onFileCheck?l.onFileCheck(f,l,m._assets.textParse)===!1:null)return!1;if((l.uploadFile||l.addMore)&&!l.allowDuplicates){var f=m._itFl.filter(function(a,b){if(a.file.name==d.name&&a.file.size==d.size&&a.file.type==d.type&&(!d.lastModified||a.file.lastModified==d.lastModified))return!0});if(f.length>0){if(1==m.files.length)return!1;d._pendRemove=!0}}b+=m.files[c].size}return!(null!=l.maxSize&&b>=Math.round(1048576*l.maxSize))||(l.dialogs.alert(m._assets.textParse(l.captions.errors.filesSizeAll)),!1)},_thumbCreator:{create:function(b){var c=m.files[b],d=m._itFc?m._itFc.id:b,e=c.name,f=c.size,g=c.file,h=c.type?c.type.split("/",1):"".toString().toLowerCase(),j=e.indexOf(".")!=-1?e.split(".").pop().toLowerCase():"",k=l.uploadFile?'
    '+l.templates.progressBar+"
    ":"",n={id:d,name:e,size:f,size2:m._assets.bytesToSize(f),url:g,type:h,extension:j,icon:m._assets.getIcon(j,h),icon2:m._thumbCreator.generateIcon({type:h,extension:j}),image:'
    ',progressBar:k,_appended:c._appended},o="";return c.opts&&(n=a.extend({},c.opts,n)),o=a(m._thumbCreator.renderContent(n)).attr("data-jfiler-index",d),o.get(0).jfiler_id=d,m._thumbCreator.renderFile(c,o,n),c.forList?o:(m._itFc.html=o,o.hide()[l.templates.itemAppendToEnd?"appendTo":"prependTo"](i.find(l.templates._selectors.list)).show(),void(c._appended||m._onSelect(b)))},renderContent:function(a){return m._assets.textParse(a._appended?l.templates.itemAppend:l.templates.item,a)},renderFile:function(b,c,d){if(0==c.find(".jFiler-item-thumb-image").length)return!1;if(b.file&&"image"==d.type){var e='',f=c.find(".jFiler-item-thumb-image.fi-loading");return a(e).error(function(){e=m._thumbCreator.generateIcon(d),c.addClass("jFiler-no-thumbnail"),f.removeClass("fi-loading").html(e)}).load(function(){f.removeClass("fi-loading").html(e)}),!0}if(window.File&&window.FileList&&window.FileReader&&"image"==d.type&&d.size<1e7){var g=new FileReader;g.onload=function(a){var b=c.find(".jFiler-item-thumb-image.fi-loading");if(l.templates.canvasImage){var e=document.createElement("canvas"),f=e.getContext("2d"),g=new Image;g.onload=function(){var a=b.height(),c=b.width(),d=g.height/a,h=g.width/c,i=de.width?-(g.width-e.width)/2:0,n=g.heighte.width?k-e.width:0,0,.5*o.width,.5*o.height,0,0,k,j)}b.removeClass("fi-loading").html('')},g.onerror=function(){c.addClass("jFiler-no-thumbnail"),b.removeClass("fi-loading").html(m._thumbCreator.generateIcon(d))},g.src=a.target.result}else b.removeClass("fi-loading").html('')},g.readAsDataURL(b)}else{var e=m._thumbCreator.generateIcon(d),f=c.find(".jFiler-item-thumb-image.fi-loading");c.addClass("jFiler-no-thumbnail"),f.removeClass("fi-loading").html(e)}},generateIcon:function(b){var c=new Array(3);if(b&&b.type&&b.type[0]&&b.extension)switch(b.type[0]){case"image":c[0]="f-image",c[1]='';break;case"video":c[0]="f-video",c[1]='';break;case"audio":c[0]="f-audio",c[1]='';break;default:c[0]="f-file f-file-ext-"+b.extension,c[1]=b.extension.length>0?"."+b.extension:"",c[2]=1}else c[0]="f-file",c[1]=b.extension&&b.extension.length>0?"."+b.extension:"",c[2]=1;var d=''+c[1]+"";if(1==c[2]){var e=m._assets.text2Color(b.extension);if(e){var f=a(d).appendTo("body");f.css("background-color",m._assets.text2Color(b.extension)),d=f.prop("outerHTML"),f.remove()}}return d},_box:function(b){if(null!=l.beforeShow&&"function"==typeof l.beforeShow&&!l.beforeShow(m.files,i,g,h,e))return!1;if(i.length<1){if(l.appendTo)var c=a(l.appendTo);else var c=g;c.find(".jFiler-items").remove(),i=a('
    '),e.prop("jFiler").listEl=i,i.append(m._assets.textParse(l.templates.box)).appendTo(c),i.on("click",l.templates._selectors.remove,function(c){c.preventDefault();var d=[b?b.remove.event:c,b?b.remove.el:a(this).closest(l.templates._selectors.item)],e=function(a){m._remove(d[0],d[1])};l.templates.removeConfirmation?l.dialogs.confirm(l.captions.removeConfirmation,e):e()})}for(var d=0;d=m.files.length&&(m._ajFc=0,e.get(0).value="",null!=l.uploadFile.onComplete&&"function"==typeof l.uploadFile.onComplete?l.uploadFile.onComplete(i,g,h,e,a,b):null)},beforeSend:function(a,c){return null==l.uploadFile.beforeSend||"function"!=typeof l.uploadFile.beforeSend||l.uploadFile.beforeSend(b,i,g,h,e,d.id,a,c)},success:function(a,c,f){d.uploaded=!0,null!=l.uploadFile.success&&"function"==typeof l.uploadFile.success?l.uploadFile.success(a,b,i,g,h,e,d.id,c,f):null},error:function(a,c,f){d.uploaded=!1,null!=l.uploadFile.error&&"function"==typeof l.uploadFile.error?l.uploadFile.error(b,i,g,h,e,d.id,a,c,f):null},statusCode:l.uploadFile.statusCode,cache:!1,contentType:!1,processData:!1}),d.ajax},progressHandling:function(a,b){if(a.lengthComputable){var c=Math.round(100*a.loaded/a.total).toString();null!=l.uploadFile.onProgress&&"function"==typeof l.uploadFile.onProgress?l.uploadFile.onProgress(c,b,i,g,h,e):null,b.find(".jFiler-jProgressBar").find(l.templates._selectors.progressBar).css("width",c+"%")}}},_dragDrop:{dragEnter:function(a){clearTimeout(m._dragDrop._drt),l.dragDrop.dragContainer.addClass("dragged"),m._set("feedback",l.captions.drop),null!=l.dragDrop.dragEnter&&"function"==typeof l.dragDrop.dragEnter?l.dragDrop.dragEnter(a,h,e,g):null},dragLeave:function(a){clearTimeout(m._dragDrop._drt),m._dragDrop._drt=setTimeout(function(a){return m._dragDrop._dragLeaveCheck(a)?(l.dragDrop.dragContainer.removeClass("dragged"),m._set("feedback",l.captions.feedback),void(null!=l.dragDrop.dragLeave&&"function"==typeof l.dragDrop.dragLeave?l.dragDrop.dragLeave(a,h,e,g):null)):(m._dragDrop.dragLeave(a),!1)},100,a)},drop:function(a){clearTimeout(m._dragDrop._drt),l.dragDrop.dragContainer.removeClass("dragged"),m._set("feedback",l.captions.feedback),a&&a.originalEvent&&a.originalEvent.dataTransfer&&a.originalEvent.dataTransfer.files&&a.originalEvent.dataTransfer.files.length>0&&m._onChange(a,a.originalEvent.dataTransfer.files),null!=l.dragDrop.drop&&"function"==typeof l.dragDrop.drop?l.dragDrop.drop(a.originalEvent.dataTransfer.files,a,h,e,g):null},_dragLeaveCheck:function(b){var c=a(b.currentTarget),d=0;return!(!c.is(h)&&(d=h.find(c).length,d>0))}},_clipboardPaste:function(a,b){if((b||a.originalEvent.clipboardData||a.originalEvent.clipboardData.items)&&(!b||a.originalEvent.dataTransfer||a.originalEvent.dataTransfer.items)&&!m._clPsePre){var c=b?a.originalEvent.dataTransfer.items:a.originalEvent.clipboardData.items,d=function(a,b,c){b=b||"",c=c||512;for(var d=atob(a),e=[],f=0;f=m.files.length&&(null!=l.afterShow&&"function"==typeof l.afterShow?l.afterShow(i,g,h,e):null)},_onChange:function(b,c){if(c){if(!c||0==c.length)return m._set("input",""),m._clear(),!1;m.files=c}else{if(!e.get(0).files||"undefined"==typeof e.get(0).files||0==e.get(0).files.length)return l.uploadFile||l.addMore||(m._set("input",""),m._clear()),!1;m.files=e.get(0).files}if(l.uploadFile||l.addMore||m._reset(!0),e.prop("jFiler").files=m.files,!m._filesCheck()||null!=l.beforeSelect&&"function"==typeof l.beforeSelect&&!l.beforeSelect(m.files,i,g,h,e))return m._set("input",""),m._clear(),l.addMore&&j.length>0&&(m._unbindInput(!0),j[j.length-1].remove(),j.splice(j.length-1,1),e=j.length>0?j[j.length-1]:a(d),m._bindInput()),!1;if(m._set("feedback",m.files.length+m._itFl.length+" "+l.captions.feedback2),l.showThumbs)m._thumbCreator._box();else for(var f=0;f0&&(!l.uploadFile||a.isEmptyObject(l.uploadFile)||f[0].uploaded?void 0:(m._itFc=f[0],e.prop("jFiler").current_file=m._itFc,m._upload(d),!0))},_remove:function(b,d){if(d.binded){if("undefined"!=typeof d.data.id&&(d=i.find(l.templates._selectors.item+"[data-jfiler-index='"+d.data.id+"']"),0==d.length))return!1;d.data.el&&(d=d.data.el)}var f=function(b){var d=g.find("input[name^='jfiler-items-exclude-']:hidden").first();0==d.length&&(d=a(''),d.appendTo(g)),b&&a.isArray(b)&&(b=JSON.stringify(b),d.val(b))},j=function(b,c){var d=m._itFl[c],e=[];if(d.file._choosed||d.file._appended||d.uploaded){m._itFr.push(d);for(var g=m._itFl.filter(function(a){return a.file.name==d.file.name}),h=0;h0&&(m._itFr[h].remove_name=g.indexOf(d)+"://"+m._itFr[h].file.name),e.push(m._itFr[h].remove_name?m._itFr[h].remove_name:m._itFr[h].file.name)}f(e),m._itFl.splice(c,1),m._itFl.length<1?(m._reset(),m._clear()):m._set("feedback",m._itFl.length+" "+l.captions.feedback2),b.fadeOut("fast",function(){a(this).remove()})},k=d.get(0).jfiler_id||d.attr("data-jfiler-index"),n=null;for(var o in m._itFl)"length"!==o&&m._itFl.hasOwnProperty(o)&&m._itFl[o].id==k&&(n=o);return!!m._itFl.hasOwnProperty(n)&&(m._itFl[n].ajax?(m._itFl[n].ajax.abort(),void j(d,n)):void(null!=l.onRemove&&"function"==typeof l.onRemove&&l.onRemove(d,m._itFl[n].file,n,i,g,h,e)===!1||j(d,n)))},_addToMemory:function(b){m._itFl.push({id:m._itFl.length,file:m.files[b],html:a(),ajax:!1,uploaded:!1}),(l.addMore||m.files[b]._appended)&&(m._itFl[m._itFl.length-1].input=e),m._itFc=m._itFl[m._itFl.length-1],e.prop("jFiler").files_list=m._itFl,e.prop("jFiler").current_file=m._itFc},_assets:{bytesToSize:function(a){if(0==a)return"0 Byte";var b=1e3,c=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],d=Math.floor(Math.log(a)/Math.log(b));return(a/Math.pow(b,d)).toPrecision(3)+" "+c[d]},hasAttr:function(a,b){var b=b?b:e,c=b.attr(a);return!(!c||"undefined"==typeof c)},getIcon:function(b,c){var d=["audio","image","text","video"];return a.inArray(c,d)>-1?'':''},textParse:function(b,c){switch(c=a.extend({},{limit:l.limit,maxSize:l.maxSize,fileMaxSize:l.fileMaxSize,extensions:l.extensions?l.extensions.join(","):null},c&&a.isPlainObject(c)?c:{},l.options),typeof b){case"string":return b.replace(/\{\{fi-(.*?)\}\}/g,function(a,b){return b=b.replace(/ /g,""),b.match(/(.*?)\|limitTo\:(\d+)/)?b.replace(/(.*?)\|limitTo\:(\d+)/,function(a,b,d){var b=c[b]?c[b]:"",e=b.substring(0,d);return e=b.length>e.length?e.substring(0,e.length-3)+"...":e}):c[b]?c[b]:""});case"function":return b(c);default:return b}},text2Color:function(a){if(!a||0==a.length)return!1;for(var b=0,c=0;b>2*b++&255).toString(16)).slice(-2));return d}},files:null,_itFl:[],_itFc:null,_itFr:[],_itPl:[],_ajFc:0};return e.on("filer.append",function(a,b){m._append(a,b)}).on("filer.remove",function(a,b){b.binded=!0,m._remove(a,b)}).on("filer.reset",function(a){return m._reset(),m._clear(),!0}).on("filer.generateList",function(a,b){return m._getList(a,b)}).on("filer.retry",function(a,b){return m._retryUpload(a,b)}),m.init(),this})},a.fn.filer.defaults={limit:null,maxSize:null,fileMaxSize:null,extensions:null,changeInput:!0,showThumbs:!1,appendTo:null,theme:"default",templates:{box:'
      ',item:'
    • {{fi-icon}}
      {{fi-name | limitTo:30}}
      size: {{fi-size2}}type: {{fi-extension}}{{fi-progressBar}}
    • ',itemAppend:'
    • {{fi-icon}}
      {{fi-name | limitTo:35}}
      size: {{fi-size2}}type: {{fi-extension}}
    • ',progressBar:'
      ',itemAppendToEnd:!1,removeConfirmation:!0,canvasImage:!0,_selectors:{list:".jFiler-items-list",item:".jFiler-item",progressBar:".bar",remove:".jFiler-item-trash-action"}},files:null,uploadFile:null,dragDrop:null,addMore:!1,allowDuplicates:!1,clipBoardPaste:!0,excludeName:null,beforeRender:null,afterRender:null,beforeShow:null,beforeSelect:null,onSelect:null,onFileCheck:null,afterShow:null,onRemove:null,onEmpty:null,options:null,dialogs:{alert:function(a){return alert(a)},confirm:function(a,b){confirm(a)?b():null}},captions:{button:"Choose Files",feedback:"Choose files To Upload",feedback2:"files were chosen",drop:"Drop file here to Upload",removeConfirmation:"Are you sure you want to remove this file?",errors:{filesLimit:"Only {{fi-limit}} files are allowed to be uploaded.",filesType:"Only Images are allowed to be uploaded.",filesSize:"{{fi-name}} is too large! Please upload file up to {{fi-fileMaxSize}} MB.",filesSizeAll:"Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB.",folderUpload:"You are not allowed to upload folders."}}}}(jQuery); \ No newline at end of file diff --git a/resources/js/jquery.fileupload.js b/resources/js/jquery.fileupload.js new file mode 100644 index 0000000..184d347 --- /dev/null +++ b/resources/js/jquery.fileupload.js @@ -0,0 +1,1606 @@ +/* + * jQuery File Upload Plugin + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + */ + +/* global define, require */ +/* eslint-disable new-cap */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['jquery', 'jquery-ui/ui/widget'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS: + factory(require('jquery'), require('./vendor/jquery.ui.widget')); + } else { + // Browser globals: + factory(window.jQuery); + } +})(function ($) { + 'use strict'; + + // Detect file input support, based on + // https://viljamis.com/2012/file-upload-support-on-mobile/ + $.support.fileInput = !( + new RegExp( + // Handle devices which give false positives for the feature detection: + '(Android (1\\.[0156]|2\\.[01]))' + + '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + + '|(w(eb)?OSBrowser)|(webOS)' + + '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' + ).test(window.navigator.userAgent) || + // Feature detection for all other devices: + $('').prop('disabled') + ); + + // The FileReader API is not actually used, but works as feature detection, + // as some Safari versions (5?) support XHR file uploads via the FormData API, + // but not non-multipart XHR file uploads. + // window.XMLHttpRequestUpload is not available on IE10, so we check for + // window.ProgressEvent instead to detect XHR2 file upload capability: + $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader); + $.support.xhrFormDataFileUpload = !!window.FormData; + + // Detect support for Blob slicing (required for chunked uploads): + $.support.blobSlice = + window.Blob && + (Blob.prototype.slice || + Blob.prototype.webkitSlice || + Blob.prototype.mozSlice); + + /** + * Helper function to create drag handlers for dragover/dragenter/dragleave + * + * @param {string} type Event type + * @returns {Function} Drag handler + */ + function getDragHandler(type) { + var isDragOver = type === 'dragover'; + return function (e) { + e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; + var dataTransfer = e.dataTransfer; + if ( + dataTransfer && + $.inArray('Files', dataTransfer.types) !== -1 && + this._trigger(type, $.Event(type, { delegatedEvent: e })) !== false + ) { + e.preventDefault(); + if (isDragOver) { + dataTransfer.dropEffect = 'copy'; + } + } + }; + } + + // The fileupload widget listens for change events on file input fields defined + // via fileInput setting and paste or drop events of the given dropZone. + // In addition to the default jQuery Widget methods, the fileupload widget + // exposes the "add" and "send" methods, to add or directly send files using + // the fileupload API. + // By default, files added via file input selection, paste, drag & drop or + // "add" method are uploaded immediately, but it is possible to override + // the "add" callback option to queue file uploads. + $.widget('blueimp.fileupload', { + options: { + // The drop target element(s), by the default the complete document. + // Set to null to disable drag & drop support: + dropZone: $(document), + // The paste target element(s), by the default undefined. + // Set to a DOM node or jQuery object to enable file pasting: + pasteZone: undefined, + // The file input field(s), that are listened to for change events. + // If undefined, it is set to the file input fields inside + // of the widget element on plugin initialization. + // Set to null to disable the change listener. + fileInput: undefined, + // By default, the file input field is replaced with a clone after + // each input field change event. This is required for iframe transport + // queues and allows change events to be fired for the same file + // selection, but can be disabled by setting the following option to false: + replaceFileInput: true, + // The parameter name for the file form data (the request argument name). + // If undefined or empty, the name property of the file input field is + // used, or "files[]" if the file input name property is also empty, + // can be a string or an array of strings: + paramName: undefined, + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads: true, + // To limit the number of files uploaded with one XHR request, + // set the following option to an integer greater than 0: + limitMultiFileUploads: undefined, + // The following option limits the number of files uploaded with one + // XHR request to keep the request size under or equal to the defined + // limit in bytes: + limitMultiFileUploadSize: undefined, + // Multipart file uploads add a number of bytes to each uploaded file, + // therefore the following option adds an overhead for each file used + // in the limitMultiFileUploadSize configuration: + limitMultiFileUploadSizeOverhead: 512, + // Set the following option to true to issue all file upload requests + // in a sequential order: + sequentialUploads: false, + // To limit the number of concurrent uploads, + // set the following option to an integer greater than 0: + limitConcurrentUploads: undefined, + // Set the following option to true to force iframe transport uploads: + forceIframeTransport: false, + // Set the following option to the location of a redirect url on the + // origin server, for cross-domain iframe transport uploads: + redirect: undefined, + // The parameter name for the redirect url, sent as part of the form + // data and set to 'redirect' if this option is empty: + redirectParamName: undefined, + // Set the following option to the location of a postMessage window, + // to enable postMessage transport uploads: + postMessage: undefined, + // By default, XHR file uploads are sent as multipart/form-data. + // The iframe transport is always using multipart/form-data. + // Set to false to enable non-multipart XHR uploads: + multipart: true, + // To upload large files in smaller chunks, set the following option + // to a preferred maximum chunk size. If set to 0, null or undefined, + // or the browser does not support the required Blob API, files will + // be uploaded as a whole. + maxChunkSize: undefined, + // When a non-multipart upload or a chunked multipart upload has been + // aborted, this option can be used to resume the upload by setting + // it to the size of the already uploaded bytes. This option is most + // useful when modifying the options object inside of the "add" or + // "send" callbacks, as the options are cloned for each file upload. + uploadedBytes: undefined, + // By default, failed (abort or error) file uploads are removed from the + // global progress calculation. Set the following option to false to + // prevent recalculating the global progress data: + recalculateProgress: true, + // Interval in milliseconds to calculate and trigger progress events: + progressInterval: 100, + // Interval in milliseconds to calculate progress bitrate: + bitrateInterval: 500, + // By default, uploads are started automatically when adding files: + autoUpload: true, + // By default, duplicate file names are expected to be handled on + // the server-side. If this is not possible (e.g. when uploading + // files directly to Amazon S3), the following option can be set to + // an empty object or an object mapping existing filenames, e.g.: + // { "image.jpg": true, "image (1).jpg": true } + // If it is set, all files will be uploaded with unique filenames, + // adding increasing number suffixes if necessary, e.g.: + // "image (2).jpg" + uniqueFilenames: undefined, + + // Error and info messages: + messages: { + uploadedBytes: 'Uploaded bytes exceed file size' + }, + + // Translation function, gets the message key to be translated + // and an object with context specific data as arguments: + i18n: function (message, context) { + // eslint-disable-next-line no-param-reassign + message = this.messages[message] || message.toString(); + if (context) { + $.each(context, function (key, value) { + // eslint-disable-next-line no-param-reassign + message = message.replace('{' + key + '}', value); + }); + } + return message; + }, + + // Additional form data to be sent along with the file uploads can be set + // using this option, which accepts an array of objects with name and + // value properties, a function returning such an array, a FormData + // object (for XHR file uploads), or a simple object. + // The form of the first fileInput is given as parameter to the function: + formData: function (form) { + return form.serializeArray(); + }, + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop, paste or add API call). + // If the singleFileUploads option is enabled, this callback will be + // called once for each file in the selection for XHR file uploads, else + // once for each file selection. + // + // The upload starts when the submit method is invoked on the data parameter. + // The data object contains a files property holding the added files + // and allows you to override plugin options as well as define ajax settings. + // + // Listeners for this callback can also be bound the following way: + // .on('fileuploadadd', func); + // + // data.submit() returns a Promise object and allows to attach additional + // handlers using jQuery's Deferred callbacks: + // data.submit().done(func).fail(func).always(func); + add: function (e, data) { + if (e.isDefaultPrevented()) { + return false; + } + if ( + data.autoUpload || + (data.autoUpload !== false && + $(this).fileupload('option', 'autoUpload')) + ) { + data.process().done(function () { + data.submit(); + }); + } + }, + + // Other callbacks: + + // Callback for the submit event of each file upload: + // submit: function (e, data) {}, // .on('fileuploadsubmit', func); + + // Callback for the start of each file upload request: + // send: function (e, data) {}, // .on('fileuploadsend', func); + + // Callback for successful uploads: + // done: function (e, data) {}, // .on('fileuploaddone', func); + + // Callback for failed (abort or error) uploads: + // fail: function (e, data) {}, // .on('fileuploadfail', func); + + // Callback for completed (success, abort or error) requests: + // always: function (e, data) {}, // .on('fileuploadalways', func); + + // Callback for upload progress events: + // progress: function (e, data) {}, // .on('fileuploadprogress', func); + + // Callback for global upload progress events: + // progressall: function (e, data) {}, // .on('fileuploadprogressall', func); + + // Callback for uploads start, equivalent to the global ajaxStart event: + // start: function (e) {}, // .on('fileuploadstart', func); + + // Callback for uploads stop, equivalent to the global ajaxStop event: + // stop: function (e) {}, // .on('fileuploadstop', func); + + // Callback for change events of the fileInput(s): + // change: function (e, data) {}, // .on('fileuploadchange', func); + + // Callback for paste events to the pasteZone(s): + // paste: function (e, data) {}, // .on('fileuploadpaste', func); + + // Callback for drop events of the dropZone(s): + // drop: function (e, data) {}, // .on('fileuploaddrop', func); + + // Callback for dragover events of the dropZone(s): + // dragover: function (e) {}, // .on('fileuploaddragover', func); + + // Callback before the start of each chunk upload request (before form data initialization): + // chunkbeforesend: function (e, data) {}, // .on('fileuploadchunkbeforesend', func); + + // Callback for the start of each chunk upload request: + // chunksend: function (e, data) {}, // .on('fileuploadchunksend', func); + + // Callback for successful chunk uploads: + // chunkdone: function (e, data) {}, // .on('fileuploadchunkdone', func); + + // Callback for failed (abort or error) chunk uploads: + // chunkfail: function (e, data) {}, // .on('fileuploadchunkfail', func); + + // Callback for completed (success, abort or error) chunk upload requests: + // chunkalways: function (e, data) {}, // .on('fileuploadchunkalways', func); + + // The plugin options are used as settings object for the ajax calls. + // The following are jQuery ajax settings required for the file uploads: + processData: false, + contentType: false, + cache: false, + timeout: 0 + }, + + // jQuery versions before 1.8 require promise.pipe if the return value is + // used, as promise.then in older versions has a different behavior, see: + // https://blog.jquery.com/2012/08/09/jquery-1-8-released/ + // https://bugs.jquery.com/ticket/11010 + // https://github.com/blueimp/jQuery-File-Upload/pull/3435 + _promisePipe: (function () { + var parts = $.fn.jquery.split('.'); + return Number(parts[0]) > 1 || Number(parts[1]) > 7 ? 'then' : 'pipe'; + })(), + + // A list of options that require reinitializing event listeners and/or + // special initialization code: + _specialOptions: [ + 'fileInput', + 'dropZone', + 'pasteZone', + 'multipart', + 'forceIframeTransport' + ], + + _blobSlice: + $.support.blobSlice && + function () { + var slice = this.slice || this.webkitSlice || this.mozSlice; + return slice.apply(this, arguments); + }, + + _BitrateTimer: function () { + this.timestamp = Date.now ? Date.now() : new Date().getTime(); + this.loaded = 0; + this.bitrate = 0; + this.getBitrate = function (now, loaded, interval) { + var timeDiff = now - this.timestamp; + if (!this.bitrate || !interval || timeDiff > interval) { + this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; + this.loaded = loaded; + this.timestamp = now; + } + return this.bitrate; + }; + }, + + _isXHRUpload: function (options) { + return ( + !options.forceIframeTransport && + ((!options.multipart && $.support.xhrFileUpload) || + $.support.xhrFormDataFileUpload) + ); + }, + + _getFormData: function (options) { + var formData; + if ($.type(options.formData) === 'function') { + return options.formData(options.form); + } + if ($.isArray(options.formData)) { + return options.formData; + } + if ($.type(options.formData) === 'object') { + formData = []; + $.each(options.formData, function (name, value) { + formData.push({ name: name, value: value }); + }); + return formData; + } + return []; + }, + + _getTotal: function (files) { + var total = 0; + $.each(files, function (index, file) { + total += file.size || 1; + }); + return total; + }, + + _initProgressObject: function (obj) { + var progress = { + loaded: 0, + total: 0, + bitrate: 0 + }; + if (obj._progress) { + $.extend(obj._progress, progress); + } else { + obj._progress = progress; + } + }, + + _initResponseObject: function (obj) { + var prop; + if (obj._response) { + for (prop in obj._response) { + if (Object.prototype.hasOwnProperty.call(obj._response, prop)) { + delete obj._response[prop]; + } + } + } else { + obj._response = {}; + } + }, + + _onProgress: function (e, data) { + if (e.lengthComputable) { + var now = Date.now ? Date.now() : new Date().getTime(), + loaded; + if ( + data._time && + data.progressInterval && + now - data._time < data.progressInterval && + e.loaded !== e.total + ) { + return; + } + data._time = now; + loaded = + Math.floor( + (e.loaded / e.total) * (data.chunkSize || data._progress.total) + ) + (data.uploadedBytes || 0); + // Add the difference from the previously loaded state + // to the global loaded counter: + this._progress.loaded += loaded - data._progress.loaded; + this._progress.bitrate = this._bitrateTimer.getBitrate( + now, + this._progress.loaded, + data.bitrateInterval + ); + data._progress.loaded = data.loaded = loaded; + data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( + now, + loaded, + data.bitrateInterval + ); + // Trigger a custom progress event with a total data property set + // to the file size(s) of the current upload and a loaded data + // property calculated accordingly: + this._trigger( + 'progress', + $.Event('progress', { delegatedEvent: e }), + data + ); + // Trigger a global progress event for all current file uploads, + // including ajax calls queued for sequential file uploads: + this._trigger( + 'progressall', + $.Event('progressall', { delegatedEvent: e }), + this._progress + ); + } + }, + + _initProgressListener: function (options) { + var that = this, + xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); + // Accesss to the native XHR object is required to add event listeners + // for the upload progress event: + if (xhr.upload) { + $(xhr.upload).on('progress', function (e) { + var oe = e.originalEvent; + // Make sure the progress event properties get copied over: + e.lengthComputable = oe.lengthComputable; + e.loaded = oe.loaded; + e.total = oe.total; + that._onProgress(e, options); + }); + options.xhr = function () { + return xhr; + }; + } + }, + + _deinitProgressListener: function (options) { + var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); + if (xhr.upload) { + $(xhr.upload).off('progress'); + } + }, + + _isInstanceOf: function (type, obj) { + // Cross-frame instanceof check + return Object.prototype.toString.call(obj) === '[object ' + type + ']'; + }, + + _getUniqueFilename: function (name, map) { + // eslint-disable-next-line no-param-reassign + name = String(name); + if (map[name]) { + // eslint-disable-next-line no-param-reassign + name = name.replace(/(?: \(([\d]+)\))?(\.[^.]+)?$/, function ( + _, + p1, + p2 + ) { + var index = p1 ? Number(p1) + 1 : 1; + var ext = p2 || ''; + return ' (' + index + ')' + ext; + }); + return this._getUniqueFilename(name, map); + } + map[name] = true; + return name; + }, + + _initXHRData: function (options) { + var that = this, + formData, + file = options.files[0], + // Ignore non-multipart setting if not supported: + multipart = options.multipart || !$.support.xhrFileUpload, + paramName = + $.type(options.paramName) === 'array' + ? options.paramName[0] + : options.paramName; + options.headers = $.extend({}, options.headers); + if (options.contentRange) { + options.headers['Content-Range'] = options.contentRange; + } + if (!multipart || options.blob || !this._isInstanceOf('File', file)) { + options.headers['Content-Disposition'] = + 'attachment; filename="' + + encodeURI(file.uploadName || file.name) + + '"'; + } + if (!multipart) { + options.contentType = file.type || 'application/octet-stream'; + options.data = options.blob || file; + } else if ($.support.xhrFormDataFileUpload) { + if (options.postMessage) { + // window.postMessage does not allow sending FormData + // objects, so we just add the File/Blob objects to + // the formData array and let the postMessage window + // create the FormData object out of this array: + formData = this._getFormData(options); + if (options.blob) { + formData.push({ + name: paramName, + value: options.blob + }); + } else { + $.each(options.files, function (index, file) { + formData.push({ + name: + ($.type(options.paramName) === 'array' && + options.paramName[index]) || + paramName, + value: file + }); + }); + } + } else { + if (that._isInstanceOf('FormData', options.formData)) { + formData = options.formData; + } else { + formData = new FormData(); + $.each(this._getFormData(options), function (index, field) { + formData.append(field.name, field.value); + }); + } + if (options.blob) { + formData.append( + paramName, + options.blob, + file.uploadName || file.name + ); + } else { + $.each(options.files, function (index, file) { + // This check allows the tests to run with + // dummy objects: + if ( + that._isInstanceOf('File', file) || + that._isInstanceOf('Blob', file) + ) { + var fileName = file.uploadName || file.name; + if (options.uniqueFilenames) { + fileName = that._getUniqueFilename( + fileName, + options.uniqueFilenames + ); + } + formData.append( + ($.type(options.paramName) === 'array' && + options.paramName[index]) || + paramName, + file, + fileName + ); + } + }); + } + } + options.data = formData; + } + // Blob reference is not needed anymore, free memory: + options.blob = null; + }, + + _initIframeSettings: function (options) { + var targetHost = $('').prop('href', options.url).prop('host'); + // Setting the dataType to iframe enables the iframe transport: + options.dataType = 'iframe ' + (options.dataType || ''); + // The iframe transport accepts a serialized array as form data: + options.formData = this._getFormData(options); + // Add redirect url to form data on cross-domain uploads: + if (options.redirect && targetHost && targetHost !== location.host) { + options.formData.push({ + name: options.redirectParamName || 'redirect', + value: options.redirect + }); + } + }, + + _initDataSettings: function (options) { + if (this._isXHRUpload(options)) { + if (!this._chunkedUpload(options, true)) { + if (!options.data) { + this._initXHRData(options); + } + this._initProgressListener(options); + } + if (options.postMessage) { + // Setting the dataType to postmessage enables the + // postMessage transport: + options.dataType = 'postmessage ' + (options.dataType || ''); + } + } else { + this._initIframeSettings(options); + } + }, + + _getParamName: function (options) { + var fileInput = $(options.fileInput), + paramName = options.paramName; + if (!paramName) { + paramName = []; + fileInput.each(function () { + var input = $(this), + name = input.prop('name') || 'files[]', + i = (input.prop('files') || [1]).length; + while (i) { + paramName.push(name); + i -= 1; + } + }); + if (!paramName.length) { + paramName = [fileInput.prop('name') || 'files[]']; + } + } else if (!$.isArray(paramName)) { + paramName = [paramName]; + } + return paramName; + }, + + _initFormSettings: function (options) { + // Retrieve missing options from the input field and the + // associated form, if available: + if (!options.form || !options.form.length) { + options.form = $(options.fileInput.prop('form')); + // If the given file input doesn't have an associated form, + // use the default widget file input's form: + if (!options.form.length) { + options.form = $(this.options.fileInput.prop('form')); + } + } + options.paramName = this._getParamName(options); + if (!options.url) { + options.url = options.form.prop('action') || location.href; + } + // The HTTP request method must be "POST" or "PUT": + options.type = ( + options.type || + ($.type(options.form.prop('method')) === 'string' && + options.form.prop('method')) || + '' + ).toUpperCase(); + if ( + options.type !== 'POST' && + options.type !== 'PUT' && + options.type !== 'PATCH' + ) { + options.type = 'POST'; + } + if (!options.formAcceptCharset) { + options.formAcceptCharset = options.form.attr('accept-charset'); + } + }, + + _getAJAXSettings: function (data) { + var options = $.extend({}, this.options, data); + this._initFormSettings(options); + this._initDataSettings(options); + return options; + }, + + // jQuery 1.6 doesn't provide .state(), + // while jQuery 1.8+ removed .isRejected() and .isResolved(): + _getDeferredState: function (deferred) { + if (deferred.state) { + return deferred.state(); + } + if (deferred.isResolved()) { + return 'resolved'; + } + if (deferred.isRejected()) { + return 'rejected'; + } + return 'pending'; + }, + + // Maps jqXHR callbacks to the equivalent + // methods of the given Promise object: + _enhancePromise: function (promise) { + promise.success = promise.done; + promise.error = promise.fail; + promise.complete = promise.always; + return promise; + }, + + // Creates and returns a Promise object enhanced with + // the jqXHR methods abort, success, error and complete: + _getXHRPromise: function (resolveOrReject, context, args) { + var dfd = $.Deferred(), + promise = dfd.promise(); + // eslint-disable-next-line no-param-reassign + context = context || this.options.context || promise; + if (resolveOrReject === true) { + dfd.resolveWith(context, args); + } else if (resolveOrReject === false) { + dfd.rejectWith(context, args); + } + promise.abort = dfd.promise; + return this._enhancePromise(promise); + }, + + // Adds convenience methods to the data callback argument: + _addConvenienceMethods: function (e, data) { + var that = this, + getPromise = function (args) { + return $.Deferred().resolveWith(that, args).promise(); + }; + data.process = function (resolveFunc, rejectFunc) { + if (resolveFunc || rejectFunc) { + data._processQueue = this._processQueue = (this._processQueue || + getPromise([this])) + [that._promisePipe](function () { + if (data.errorThrown) { + return $.Deferred().rejectWith(that, [data]).promise(); + } + return getPromise(arguments); + }) + [that._promisePipe](resolveFunc, rejectFunc); + } + return this._processQueue || getPromise([this]); + }; + data.submit = function () { + if (this.state() !== 'pending') { + data.jqXHR = this.jqXHR = + that._trigger( + 'submit', + $.Event('submit', { delegatedEvent: e }), + this + ) !== false && that._onSend(e, this); + } + return this.jqXHR || that._getXHRPromise(); + }; + data.abort = function () { + if (this.jqXHR) { + return this.jqXHR.abort(); + } + this.errorThrown = 'abort'; + that._trigger('fail', null, this); + return that._getXHRPromise(false); + }; + data.state = function () { + if (this.jqXHR) { + return that._getDeferredState(this.jqXHR); + } + if (this._processQueue) { + return that._getDeferredState(this._processQueue); + } + }; + data.processing = function () { + return ( + !this.jqXHR && + this._processQueue && + that._getDeferredState(this._processQueue) === 'pending' + ); + }; + data.progress = function () { + return this._progress; + }; + data.response = function () { + return this._response; + }; + }, + + // Parses the Range header from the server response + // and returns the uploaded bytes: + _getUploadedBytes: function (jqXHR) { + var range = jqXHR.getResponseHeader('Range'), + parts = range && range.split('-'), + upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10); + return upperBytesPos && upperBytesPos + 1; + }, + + // Uploads a file in multiple, sequential requests + // by splitting the file up in multiple blob chunks. + // If the second parameter is true, only tests if the file + // should be uploaded in chunks, but does not invoke any + // upload requests: + _chunkedUpload: function (options, testOnly) { + options.uploadedBytes = options.uploadedBytes || 0; + var that = this, + file = options.files[0], + fs = file.size, + ub = options.uploadedBytes, + mcs = options.maxChunkSize || fs, + slice = this._blobSlice, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + upload; + if ( + !( + this._isXHRUpload(options) && + slice && + (ub || ($.type(mcs) === 'function' ? mcs(options) : mcs) < fs) + ) || + options.data + ) { + return false; + } + if (testOnly) { + return true; + } + if (ub >= fs) { + file.error = options.i18n('uploadedBytes'); + return this._getXHRPromise(false, options.context, [ + null, + 'error', + file.error + ]); + } + // The chunk upload method: + upload = function () { + // Clone the options object for each chunk upload: + var o = $.extend({}, options), + currentLoaded = o._progress.loaded; + o.blob = slice.call( + file, + ub, + ub + ($.type(mcs) === 'function' ? mcs(o) : mcs), + file.type + ); + // Store the current chunk size, as the blob itself + // will be dereferenced after data processing: + o.chunkSize = o.blob.size; + // Expose the chunk bytes position range: + o.contentRange = + 'bytes ' + ub + '-' + (ub + o.chunkSize - 1) + '/' + fs; + // Trigger chunkbeforesend to allow form data to be updated for this chunk + that._trigger('chunkbeforesend', null, o); + // Process the upload data (the blob and potential form data): + that._initXHRData(o); + // Add progress listeners for this chunk upload: + that._initProgressListener(o); + jqXHR = ( + (that._trigger('chunksend', null, o) !== false && $.ajax(o)) || + that._getXHRPromise(false, o.context) + ) + .done(function (result, textStatus, jqXHR) { + ub = that._getUploadedBytes(jqXHR) || ub + o.chunkSize; + // Create a progress event if no final progress event + // with loaded equaling total has been triggered + // for this chunk: + if (currentLoaded + o.chunkSize - o._progress.loaded) { + that._onProgress( + $.Event('progress', { + lengthComputable: true, + loaded: ub - o.uploadedBytes, + total: ub - o.uploadedBytes + }), + o + ); + } + options.uploadedBytes = o.uploadedBytes = ub; + o.result = result; + o.textStatus = textStatus; + o.jqXHR = jqXHR; + that._trigger('chunkdone', null, o); + that._trigger('chunkalways', null, o); + if (ub < fs) { + // File upload not yet complete, + // continue with the next chunk: + upload(); + } else { + dfd.resolveWith(o.context, [result, textStatus, jqXHR]); + } + }) + .fail(function (jqXHR, textStatus, errorThrown) { + o.jqXHR = jqXHR; + o.textStatus = textStatus; + o.errorThrown = errorThrown; + that._trigger('chunkfail', null, o); + that._trigger('chunkalways', null, o); + dfd.rejectWith(o.context, [jqXHR, textStatus, errorThrown]); + }) + .always(function () { + that._deinitProgressListener(o); + }); + }; + this._enhancePromise(promise); + promise.abort = function () { + return jqXHR.abort(); + }; + upload(); + return promise; + }, + + _beforeSend: function (e, data) { + if (this._active === 0) { + // the start callback is triggered when an upload starts + // and no other uploads are currently running, + // equivalent to the global ajaxStart event: + this._trigger('start'); + // Set timer for global bitrate progress calculation: + this._bitrateTimer = new this._BitrateTimer(); + // Reset the global progress values: + this._progress.loaded = this._progress.total = 0; + this._progress.bitrate = 0; + } + // Make sure the container objects for the .response() and + // .progress() methods on the data object are available + // and reset to their initial state: + this._initResponseObject(data); + this._initProgressObject(data); + data._progress.loaded = data.loaded = data.uploadedBytes || 0; + data._progress.total = data.total = this._getTotal(data.files) || 1; + data._progress.bitrate = data.bitrate = 0; + this._active += 1; + // Initialize the global progress values: + this._progress.loaded += data.loaded; + this._progress.total += data.total; + }, + + _onDone: function (result, textStatus, jqXHR, options) { + var total = options._progress.total, + response = options._response; + if (options._progress.loaded < total) { + // Create a progress event if no final progress event + // with loaded equaling total has been triggered: + this._onProgress( + $.Event('progress', { + lengthComputable: true, + loaded: total, + total: total + }), + options + ); + } + response.result = options.result = result; + response.textStatus = options.textStatus = textStatus; + response.jqXHR = options.jqXHR = jqXHR; + this._trigger('done', null, options); + }, + + _onFail: function (jqXHR, textStatus, errorThrown, options) { + var response = options._response; + if (options.recalculateProgress) { + // Remove the failed (error or abort) file upload from + // the global progress calculation: + this._progress.loaded -= options._progress.loaded; + this._progress.total -= options._progress.total; + } + response.jqXHR = options.jqXHR = jqXHR; + response.textStatus = options.textStatus = textStatus; + response.errorThrown = options.errorThrown = errorThrown; + this._trigger('fail', null, options); + }, + + _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { + // jqXHRorResult, textStatus and jqXHRorError are added to the + // options object via done and fail callbacks + this._trigger('always', null, options); + }, + + _onSend: function (e, data) { + if (!data.submit) { + this._addConvenienceMethods(e, data); + } + var that = this, + jqXHR, + aborted, + slot, + pipe, + options = that._getAJAXSettings(data), + send = function () { + that._sending += 1; + // Set timer for bitrate progress calculation: + options._bitrateTimer = new that._BitrateTimer(); + jqXHR = + jqXHR || + ( + ((aborted || + that._trigger( + 'send', + $.Event('send', { delegatedEvent: e }), + options + ) === false) && + that._getXHRPromise(false, options.context, aborted)) || + that._chunkedUpload(options) || + $.ajax(options) + ) + .done(function (result, textStatus, jqXHR) { + that._onDone(result, textStatus, jqXHR, options); + }) + .fail(function (jqXHR, textStatus, errorThrown) { + that._onFail(jqXHR, textStatus, errorThrown, options); + }) + .always(function (jqXHRorResult, textStatus, jqXHRorError) { + that._deinitProgressListener(options); + that._onAlways( + jqXHRorResult, + textStatus, + jqXHRorError, + options + ); + that._sending -= 1; + that._active -= 1; + if ( + options.limitConcurrentUploads && + options.limitConcurrentUploads > that._sending + ) { + // Start the next queued upload, + // that has not been aborted: + var nextSlot = that._slots.shift(); + while (nextSlot) { + if (that._getDeferredState(nextSlot) === 'pending') { + nextSlot.resolve(); + break; + } + nextSlot = that._slots.shift(); + } + } + if (that._active === 0) { + // The stop callback is triggered when all uploads have + // been completed, equivalent to the global ajaxStop event: + that._trigger('stop'); + } + }); + return jqXHR; + }; + this._beforeSend(e, options); + if ( + this.options.sequentialUploads || + (this.options.limitConcurrentUploads && + this.options.limitConcurrentUploads <= this._sending) + ) { + if (this.options.limitConcurrentUploads > 1) { + slot = $.Deferred(); + this._slots.push(slot); + pipe = slot[that._promisePipe](send); + } else { + this._sequence = this._sequence[that._promisePipe](send, send); + pipe = this._sequence; + } + // Return the piped Promise object, enhanced with an abort method, + // which is delegated to the jqXHR object of the current upload, + // and jqXHR callbacks mapped to the equivalent Promise methods: + pipe.abort = function () { + aborted = [undefined, 'abort', 'abort']; + if (!jqXHR) { + if (slot) { + slot.rejectWith(options.context, aborted); + } + return send(); + } + return jqXHR.abort(); + }; + return this._enhancePromise(pipe); + } + return send(); + }, + + _onAdd: function (e, data) { + var that = this, + result = true, + options = $.extend({}, this.options, data), + files = data.files, + filesLength = files.length, + limit = options.limitMultiFileUploads, + limitSize = options.limitMultiFileUploadSize, + overhead = options.limitMultiFileUploadSizeOverhead, + batchSize = 0, + paramName = this._getParamName(options), + paramNameSet, + paramNameSlice, + fileSet, + i, + j = 0; + if (!filesLength) { + return false; + } + if (limitSize && files[0].size === undefined) { + limitSize = undefined; + } + if ( + !(options.singleFileUploads || limit || limitSize) || + !this._isXHRUpload(options) + ) { + fileSet = [files]; + paramNameSet = [paramName]; + } else if (!(options.singleFileUploads || limitSize) && limit) { + fileSet = []; + paramNameSet = []; + for (i = 0; i < filesLength; i += limit) { + fileSet.push(files.slice(i, i + limit)); + paramNameSlice = paramName.slice(i, i + limit); + if (!paramNameSlice.length) { + paramNameSlice = paramName; + } + paramNameSet.push(paramNameSlice); + } + } else if (!options.singleFileUploads && limitSize) { + fileSet = []; + paramNameSet = []; + for (i = 0; i < filesLength; i = i + 1) { + batchSize += files[i].size + overhead; + if ( + i + 1 === filesLength || + batchSize + files[i + 1].size + overhead > limitSize || + (limit && i + 1 - j >= limit) + ) { + fileSet.push(files.slice(j, i + 1)); + paramNameSlice = paramName.slice(j, i + 1); + if (!paramNameSlice.length) { + paramNameSlice = paramName; + } + paramNameSet.push(paramNameSlice); + j = i + 1; + batchSize = 0; + } + } + } else { + paramNameSet = paramName; + } + data.originalFiles = files; + $.each(fileSet || files, function (index, element) { + var newData = $.extend({}, data); + newData.files = fileSet ? element : [element]; + newData.paramName = paramNameSet[index]; + that._initResponseObject(newData); + that._initProgressObject(newData); + that._addConvenienceMethods(e, newData); + result = that._trigger( + 'add', + $.Event('add', { delegatedEvent: e }), + newData + ); + return result; + }); + return result; + }, + + _replaceFileInput: function (data) { + var input = data.fileInput, + inputClone = input.clone(true), + restoreFocus = input.is(document.activeElement); + // Add a reference for the new cloned file input to the data argument: + data.fileInputClone = inputClone; + $('
      ').append(inputClone)[0].reset(); + // Detaching allows to insert the fileInput on another form + // without loosing the file input value: + input.after(inputClone).detach(); + // If the fileInput had focus before it was detached, + // restore focus to the inputClone. + if (restoreFocus) { + inputClone.trigger('focus'); + } + // Avoid memory leaks with the detached file input: + $.cleanData(input.off('remove')); + // Replace the original file input element in the fileInput + // elements set with the clone, which has been copied including + // event handlers: + this.options.fileInput = this.options.fileInput.map(function (i, el) { + if (el === input[0]) { + return inputClone[0]; + } + return el; + }); + // If the widget has been initialized on the file input itself, + // override this.element with the file input clone: + if (input[0] === this.element[0]) { + this.element = inputClone; + } + }, + + _handleFileTreeEntry: function (entry, path) { + var that = this, + dfd = $.Deferred(), + entries = [], + dirReader, + errorHandler = function (e) { + if (e && !e.entry) { + e.entry = entry; + } + // Since $.when returns immediately if one + // Deferred is rejected, we use resolve instead. + // This allows valid files and invalid items + // to be returned together in one set: + dfd.resolve([e]); + }, + successHandler = function (entries) { + that + ._handleFileTreeEntries(entries, path + entry.name + '/') + .done(function (files) { + dfd.resolve(files); + }) + .fail(errorHandler); + }, + readEntries = function () { + dirReader.readEntries(function (results) { + if (!results.length) { + successHandler(entries); + } else { + entries = entries.concat(results); + readEntries(); + } + }, errorHandler); + }; + // eslint-disable-next-line no-param-reassign + path = path || ''; + if (entry.isFile) { + if (entry._file) { + // Workaround for Chrome bug #149735 + entry._file.relativePath = path; + dfd.resolve(entry._file); + } else { + entry.file(function (file) { + file.relativePath = path; + dfd.resolve(file); + }, errorHandler); + } + } else if (entry.isDirectory) { + dirReader = entry.createReader(); + readEntries(); + } else { + // Return an empty list for file system items + // other than files or directories: + dfd.resolve([]); + } + return dfd.promise(); + }, + + _handleFileTreeEntries: function (entries, path) { + var that = this; + return $.when + .apply( + $, + $.map(entries, function (entry) { + return that._handleFileTreeEntry(entry, path); + }) + ) + [this._promisePipe](function () { + return Array.prototype.concat.apply([], arguments); + }); + }, + + _getDroppedFiles: function (dataTransfer) { + // eslint-disable-next-line no-param-reassign + dataTransfer = dataTransfer || {}; + var items = dataTransfer.items; + if ( + items && + items.length && + (items[0].webkitGetAsEntry || items[0].getAsEntry) + ) { + return this._handleFileTreeEntries( + $.map(items, function (item) { + var entry; + if (item.webkitGetAsEntry) { + entry = item.webkitGetAsEntry(); + if (entry) { + // Workaround for Chrome bug #149735: + entry._file = item.getAsFile(); + } + return entry; + } + return item.getAsEntry(); + }) + ); + } + return $.Deferred().resolve($.makeArray(dataTransfer.files)).promise(); + }, + + _getSingleFileInputFiles: function (fileInput) { + // eslint-disable-next-line no-param-reassign + fileInput = $(fileInput); + var entries = + fileInput.prop('webkitEntries') || fileInput.prop('entries'), + files, + value; + if (entries && entries.length) { + return this._handleFileTreeEntries(entries); + } + files = $.makeArray(fileInput.prop('files')); + if (!files.length) { + value = fileInput.prop('value'); + if (!value) { + return $.Deferred().resolve([]).promise(); + } + // If the files property is not available, the browser does not + // support the File API and we add a pseudo File object with + // the input value as name with path information removed: + files = [{ name: value.replace(/^.*\\/, '') }]; + } else if (files[0].name === undefined && files[0].fileName) { + // File normalization for Safari 4 and Firefox 3: + $.each(files, function (index, file) { + file.name = file.fileName; + file.size = file.fileSize; + }); + } + return $.Deferred().resolve(files).promise(); + }, + + _getFileInputFiles: function (fileInput) { + if (!(fileInput instanceof $) || fileInput.length === 1) { + return this._getSingleFileInputFiles(fileInput); + } + return $.when + .apply($, $.map(fileInput, this._getSingleFileInputFiles)) + [this._promisePipe](function () { + return Array.prototype.concat.apply([], arguments); + }); + }, + + _onChange: function (e) { + var that = this, + data = { + fileInput: $(e.target), + form: $(e.target.form) + }; + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + if (that.options.replaceFileInput) { + that._replaceFileInput(data); + } + if ( + that._trigger( + 'change', + $.Event('change', { delegatedEvent: e }), + data + ) !== false + ) { + that._onAdd(e, data); + } + }); + }, + + _onPaste: function (e) { + var items = + e.originalEvent && + e.originalEvent.clipboardData && + e.originalEvent.clipboardData.items, + data = { files: [] }; + if (items && items.length) { + $.each(items, function (index, item) { + var file = item.getAsFile && item.getAsFile(); + if (file) { + data.files.push(file); + } + }); + if ( + this._trigger( + 'paste', + $.Event('paste', { delegatedEvent: e }), + data + ) !== false + ) { + this._onAdd(e, data); + } + } + }, + + _onDrop: function (e) { + e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; + var that = this, + dataTransfer = e.dataTransfer, + data = {}; + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + e.preventDefault(); + this._getDroppedFiles(dataTransfer).always(function (files) { + data.files = files; + if ( + that._trigger( + 'drop', + $.Event('drop', { delegatedEvent: e }), + data + ) !== false + ) { + that._onAdd(e, data); + } + }); + } + }, + + _onDragOver: getDragHandler('dragover'), + + _onDragEnter: getDragHandler('dragenter'), + + _onDragLeave: getDragHandler('dragleave'), + + _initEventHandlers: function () { + if (this._isXHRUpload(this.options)) { + this._on(this.options.dropZone, { + dragover: this._onDragOver, + drop: this._onDrop, + // event.preventDefault() on dragenter is required for IE10+: + dragenter: this._onDragEnter, + // dragleave is not required, but added for completeness: + dragleave: this._onDragLeave + }); + this._on(this.options.pasteZone, { + paste: this._onPaste + }); + } + if ($.support.fileInput) { + this._on(this.options.fileInput, { + change: this._onChange + }); + } + }, + + _destroyEventHandlers: function () { + this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); + this._off(this.options.pasteZone, 'paste'); + this._off(this.options.fileInput, 'change'); + }, + + _destroy: function () { + this._destroyEventHandlers(); + }, + + _setOption: function (key, value) { + var reinit = $.inArray(key, this._specialOptions) !== -1; + if (reinit) { + this._destroyEventHandlers(); + } + this._super(key, value); + if (reinit) { + this._initSpecialOptions(); + this._initEventHandlers(); + } + }, + + _initSpecialOptions: function () { + var options = this.options; + if (options.fileInput === undefined) { + options.fileInput = this.element.is('input[type="file"]') + ? this.element + : this.element.find('input[type="file"]'); + } else if (!(options.fileInput instanceof $)) { + options.fileInput = $(options.fileInput); + } + if (!(options.dropZone instanceof $)) { + options.dropZone = $(options.dropZone); + } + if (!(options.pasteZone instanceof $)) { + options.pasteZone = $(options.pasteZone); + } + }, + + _getRegExp: function (str) { + var parts = str.split('/'), + modifiers = parts.pop(); + parts.shift(); + return new RegExp(parts.join('/'), modifiers); + }, + + _isRegExpOption: function (key, value) { + return ( + key !== 'url' && + $.type(value) === 'string' && + /^\/.*\/[igm]{0,3}$/.test(value) + ); + }, + + _initDataAttributes: function () { + var that = this, + options = this.options, + data = this.element.data(); + // Initialize options set via HTML5 data-attributes: + $.each(this.element[0].attributes, function (index, attr) { + var key = attr.name.toLowerCase(), + value; + if (/^data-/.test(key)) { + // Convert hyphen-ated key to camelCase: + key = key.slice(5).replace(/-[a-z]/g, function (str) { + return str.charAt(1).toUpperCase(); + }); + value = data[key]; + if (that._isRegExpOption(key, value)) { + value = that._getRegExp(value); + } + options[key] = value; + } + }); + }, + + _create: function () { + this._initDataAttributes(); + this._initSpecialOptions(); + this._slots = []; + this._sequence = this._getXHRPromise(true); + this._sending = this._active = 0; + this._initProgressObject(this); + this._initEventHandlers(); + }, + + // This method is exposed to the widget API and allows to query + // the number of active uploads: + active: function () { + return this._active; + }, + + // This method is exposed to the widget API and allows to query + // the widget upload progress. + // It returns an object with loaded, total and bitrate properties + // for the running uploads: + progress: function () { + return this._progress; + }, + + // This method is exposed to the widget API and allows adding files + // using the fileupload API. The data parameter accepts an object which + // must have a files property and can contain additional options: + // .fileupload('add', {files: filesList}); + add: function (data) { + var that = this; + if (!data || this.options.disabled) { + return; + } + if (data.fileInput && !data.files) { + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + that._onAdd(null, data); + }); + } else { + data.files = $.makeArray(data.files); + this._onAdd(null, data); + } + }, + + // This method is exposed to the widget API and allows sending files + // using the fileupload API. The data parameter accepts an object which + // must have a files or fileInput property and can contain additional options: + // .fileupload('send', {files: filesList}); + // The method returns a Promise object for the file upload call. + send: function (data) { + if (data && !this.options.disabled) { + if (data.fileInput && !data.files) { + var that = this, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + aborted; + promise.abort = function () { + aborted = true; + if (jqXHR) { + return jqXHR.abort(); + } + dfd.reject(null, 'abort', 'abort'); + return promise; + }; + this._getFileInputFiles(data.fileInput).always(function (files) { + if (aborted) { + return; + } + if (!files.length) { + dfd.reject(); + return; + } + data.files = files; + jqXHR = that._onSend(null, data); + jqXHR.then( + function (result, textStatus, jqXHR) { + dfd.resolve(result, textStatus, jqXHR); + }, + function (jqXHR, textStatus, errorThrown) { + dfd.reject(jqXHR, textStatus, errorThrown); + } + ); + }); + return this._enhancePromise(promise); + } + data.files = $.makeArray(data.files); + if (data.files.length) { + return this._onSend(null, data); + } + } + return this._getXHRPromise(false, data && data.context); + } + }); +}); diff --git a/resources/js/jquery.justified.min.js b/resources/js/jquery.justified.min.js new file mode 100644 index 0000000..c3760d2 --- /dev/null +++ b/resources/js/jquery.justified.min.js @@ -0,0 +1 @@ +!function(t,i,h,e){"use strict";function o(i,h){this.element=i,this.$el=t(i),this._name=s,this.init(h)}var s="justifiedImages";o.prototype={defaults:{template:function(t){return'
      '},appendBlocks:function(){return[]},rowHeight:150,maxRowHeight:350,handleResize:!1,margin:1,imageSelector:"image-thumb",imageContainer:"photo-container"},init:function(i){this.options=t.extend({},this.defaults,i),this.displayImages(),this.options.handleResize&&this.handleResize()},getBlockInRow:function(t){for(var i=this.options.appendBlocks(),h=0;ho;){var w={width:0,photos:[]},u=0,v=this.getBlockInRow(a.length+1);for(v&&(w.width+=v.width,f+=v.width);f+h[o+u]/2<=m*(a.length+1)&&s>o+u;)f+=h[o+u],w.width+=h[o+u],w.photos.push({width:h[o+u],photo:n[o+u]}),u++;o+=u,a.push(w)}console.log(a.length,a);for(var y=0;ythis.options.maxRows)break;y===a.length-1&&(R=!0),f=-1*d;var I=this.getBlockInRow(R?-1:e),x=l;I&&(x-=I.width,f=0);var b=x/w.width,u=w.photos.length,k=Math.min(Math.floor(c*b),parseInt(this.options.maxRowHeight,10));b=k/this.options.rowHeight;var H=t("
      ",{"class":"picrow"});H.height(k+d),g.append(H);for(var M="",B=0;Bf;){var S=H.find("."+this.options.imageContainer+":nth-child("+(C+1)+")"),$=S.find("."+this.options.imageSelector);$.width($.width()+1),C=(C+1)%u,f++}for(C=0;f>x;){var P=H.find("."+this.options.imageContainer+":nth-child("+(C+1)+")"),_=P.find("."+this.options.imageSelector);_.width(_.width()-1),C=(C+1)%u,f--}}else if(x-f>.05*x)for(var O=x-f,W=0,q=H.find("."+this.options.imageContainer),A=0,N=0;N",{"class":this.options.imageContainer+" added-block",css:{width:I.width,height:k},html:I.html}).appendTo(H)}else H.remove()}},renderPhoto:function(i,h,e){var o={},s;return s=t.extend({},i,{src:h.src,displayWidth:h.width,displayHeight:h.height,marginRight:e?0:this.options.margin}),this.options.dataObject?o[this.options.dataObject]=s:o=s,this.options.template(o)},handleResize:function(){},refresh:function(i){this.options=t.extend({},this.defaults,i),this.$el.empty(),this.displayImages()}},t.fn[s]=function(i){var h=arguments,e;return this.each(function(){var n=t(this),a=t.data(this,"plugin_"+s),r="object"==typeof i&&i;a?"string"==typeof i?e=a[i].apply(a,Array.prototype.slice.call(h,1)):a.refresh.call(a,r):n.data("plugin_"+s,a=new o(this,r))}),e||this}}(jQuery,window,document); \ No newline at end of file diff --git a/resources/js/jquery.justifiedGallery.min.js b/resources/js/jquery.justifiedGallery.min.js new file mode 100644 index 0000000..cea4439 --- /dev/null +++ b/resources/js/jquery.justifiedGallery.min.js @@ -0,0 +1,8 @@ +/*! + * justifiedGallery - v3.8.0 + * http://miromannino.github.io/Justified-Gallery/ + * Copyright (c) 2020 Miro Mannino + * Licensed under the MIT license. + */ + +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,i){return void 0===i&&(i="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(i),i}:e(jQuery)}(function(l){var r=function(t,i){this.settings=i,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,height:0,aspectRatio:0},this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.yield={every:2,flushed:0},this.border=0<=i.border?i.border:i.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.rows=0,this.spinner={phase:0,timeSlot:150,$el:l('
      '),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i .jg-caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-Math.round(s/2)),o.css("margin-top",-Math.round(n/2));var a=o.data("jg.src");if(a){a=this.newSrc(a,s,n,o[0]),o.one("error",function(){this.resetImgSrc(o)});var h=function(){o.attr("src",a)};"skipped"===t.data("jg.loaded")&&a?this.onImageEvent(a,function(){this.showImg(t,h),t.data("jg.loaded",!0)}.bind(this)):this.showImg(t,h)}}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=l('
      '+s+"
      "),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0this.settings.justifyThreshold;if(i||t&&"hide"===this.settings.lastRow&&!d){for(e=0;e img, > a > img").fadeTo(0,0));return-1}for(t&&!d&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(a=!1,0this.settings.justifyThreshold)),e=0;ethis.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0))}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase=this.yield.every))return void this.startImgAnalyzer(t)}else if("error"!==e.data("jg.loaded"))return}0 img, > a > img, > svg, > a > svg",triggerEvent:function(t){this.$gallery.trigger(t)}},l.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=l(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==l.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,l.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}}); \ No newline at end of file diff --git a/resources/views/account/app.blade.php b/resources/views/account/app.blade.php new file mode 100644 index 0000000..5dbfb15 --- /dev/null +++ b/resources/views/account/app.blade.php @@ -0,0 +1,43 @@ + + + + + + +
      + + +
      + + + + diff --git a/resources/views/account/login.blade.php b/resources/views/account/login.blade.php new file mode 100644 index 0000000..32b6543 --- /dev/null +++ b/resources/views/account/login.blade.php @@ -0,0 +1,27 @@ + + + + + + +
      +
      + +
      +
      +
      +

      Login

      +
      + @csrf + + + + Register +
      +
      +
      +
      + + + + diff --git a/resources/views/account/register.blade.php b/resources/views/account/register.blade.php new file mode 100644 index 0000000..ea1d727 --- /dev/null +++ b/resources/views/account/register.blade.php @@ -0,0 +1,38 @@ + + + + + + +
      +
      + +
      +
      +
      +

      Register

      + @if ($errors->any()) +
      +
        + @foreach ($errors->all() as $error) +
      • {{ $error }}
      • + @endforeach +
      +
      + @endif +
      + @csrf + + + + + + Login +
      +
      +
      +
      + + + + diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php new file mode 100644 index 0000000..68c0706 --- /dev/null +++ b/resources/views/dashboard/index.blade.php @@ -0,0 +1,101 @@ +@extends('layout/template') + +@section('content') + +
      +
      +

      Dashboard

      + +
      +
      +
      +
      +
      +
      +
      +
      Storage
      +
      + +

      Currently you use {{ $currentSize }} of Storage.

      +
      +
      +
      +
      +
      +
      Traffic
      +
      + +

      In the last 24 Hours you use {{ $currentTraffic }} Traffic, this month you used already {{ $monthlyTraffic }}

      +
      +
      +
      +
      +
      +
      + FAQ +
      +
      + + +@endsection + +@section('js') + + +@endsection diff --git a/resources/views/gallery/index.blade.php b/resources/views/gallery/index.blade.php new file mode 100644 index 0000000..5e370ad --- /dev/null +++ b/resources/views/gallery/index.blade.php @@ -0,0 +1,45 @@ +@extends('layout/template') + +@section('content') + New Gallery +

      Gallery

      +
      +
      + + + + + + + + + @foreach($galleries as $gallery) + + + + + + + + @endforeach +
      #PreviewNameCreate Date
      {{ $gallery->id }} + @if($gallery->main_image == null) + + @else + + @endif + + {{ $gallery->name }}{{ $gallery->gallery_create_time }} + +
      +
      +@endsection diff --git a/resources/views/gallery/new.blade.php b/resources/views/gallery/new.blade.php new file mode 100644 index 0000000..65cafb0 --- /dev/null +++ b/resources/views/gallery/new.blade.php @@ -0,0 +1,44 @@ +@extends('layout/template') + +@section('content') +

      Gallery

      +
      + @if ($errors->any()) +
      +
        + @foreach ($errors->all() as $error) +
      • {{ $error }}
      • + @endforeach +
      +
      + @endif +
      +
      + @csrf + + + + +
      + +
      +
      +

      + +

      +
      +
      +
      + + +
      +
      +
      + +
      + +
      +
      +@endsection diff --git a/resources/views/gallery/upload.blade.php b/resources/views/gallery/upload.blade.php new file mode 100644 index 0000000..c3b5cbc --- /dev/null +++ b/resources/views/gallery/upload.blade.php @@ -0,0 +1,49 @@ +@extends('layout/template') + +@section('content') +

      Images

      +

      Add Images to your gallery

      +
      +
      + + +
      + Publish Gallery +
      +@endsection + + + +@section('js') + + + + + + +@endsection diff --git a/resources/views/layout/template.blade.php b/resources/views/layout/template.blade.php new file mode 100644 index 0000000..ac056cd --- /dev/null +++ b/resources/views/layout/template.blade.php @@ -0,0 +1,53 @@ + + + + + + +
      + + +
      + @yield('content') +
      + +
      + + + +@yield('js') + diff --git a/resources/views/public/register.blade.php b/resources/views/public/register.blade.php deleted file mode 100644 index 4223842..0000000 --- a/resources/views/public/register.blade.php +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - AdminLTE 2 | Registration Page - - - - - - - - - - - - - - - - - - - - - -
      - - -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      -
      -
      - -
      -
      - -
      - -
      - -
      -
      - - - - I already have a membership -
      - -
      - - - - - - - - - - - diff --git a/resources/views/tenant/new.blade.php b/resources/views/tenant/new.blade.php new file mode 100644 index 0000000..a405d08 --- /dev/null +++ b/resources/views/tenant/new.blade.php @@ -0,0 +1,34 @@ +@extends('layout/template') + +@section('content') +

      New Tenant

      +@if ($errors->any()) +
      +
        + @foreach ($errors->all() as $error) +
      • {{ $error }}
      • + @endforeach +
      +
      +@endif +
      +

      A Tenant contains a URL which can be called its www.kuvia.cloud/yourURL. Each Tenant is get seperate information about used space and used traffic.

      +

      Your default Tenant is the same like your username. You can create unlimited tenants.

      + @csrf + + + +
      +
      +

      Idears for later:

      +
        +
      • Tenants without url, just access via api
      • +
      • Private Tenants
      • +
      • Themes per Tenant
      • +
      • Multi users per tenant
      • +
      • Disabled Tenants for default user, they just get one when register, less confusion
      • +
      +
      + +@endsection + diff --git a/resources/views/themes/gallery/default/list.blade.php b/resources/views/themes/gallery/default/list.blade.php new file mode 100644 index 0000000..6c83f45 --- /dev/null +++ b/resources/views/themes/gallery/default/list.blade.php @@ -0,0 +1,28 @@ +@extends('layout/template') + +@section('content') +
      +
      +

      Galleries {{ $gallery->name }}

      + +
      + @foreach($images as $image) + + {{ $image->filename }} + + @endforeach +
      +
      +
      + +@endsection + +@section('js') + + + +@endsection diff --git a/resources/views/themes/tenant/default/list.blade.php b/resources/views/themes/tenant/default/list.blade.php new file mode 100644 index 0000000..ec5dab1 --- /dev/null +++ b/resources/views/themes/tenant/default/list.blade.php @@ -0,0 +1,10 @@ +@extends('layout/template') + +@section('content') +

      Galleries

      +@foreach($galleries as $gallery) + +@endforeach +@endsection diff --git a/routes/web.php b/routes/web.php index fc98f17..cac8fa6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,8 @@ use Illuminate\Support\Facades\Route; + + /* |-------------------------------------------------------------------------- | Web Routes @@ -13,6 +15,37 @@ use Illuminate\Support\Facades\Route; | */ -Route::get('/', function () { - return view('public.register'); +$middlewareGroups = [ + 'private' => [ + \App\Http\Middleware\TenanMiddleware::class + ], + +]; + +Route::get("/register", [\App\Http\Controllers\AccountController::class, 'registerView']); +Route::post("/register", [\App\Http\Controllers\AccountController::class, 'register']); +Route::get("/login", [\App\Http\Controllers\AccountController::class, 'loginView']); +Route::post("/login", [\App\Http\Controllers\AccountController::class, 'login']); + +Route::middleware([\App\Http\Middleware\TenanMiddleware::class])->group(function () { + Route::get("/d", [\App\Http\Controllers\DashboardController::class, 'dashboardView']); + + Route::get("/t/new", [\App\Http\Controllers\TenantController::class, 'newView']); + Route::post("/t/new", [\App\Http\Controllers\TenantController::class, 'newTenant']); + Route::get("/t/select/{name}", [\App\Http\Controllers\TenantController::class, 'switchTenant']); + + Route::get("/g", [\App\Http\Controllers\GalleryController::class, 'listView']); + Route::get("/g/new", [\App\Http\Controllers\GalleryController::class, 'newView']); + Route::post("/g/new", [\App\Http\Controllers\GalleryController::class, 'newGallery']); + Route::get("/g/{url}/upload", [\App\Http\Controllers\GalleryController::class, 'imagesUploadView']); + Route::post("/g/{url}/upload", [\App\Http\Controllers\GalleryController::class, 'imageUpload']); +}); + +Route::get("/{name}", [\App\Http\Controllers\PublicController::class, 'listGalleriesView'])->middleware([\App\Http\Middleware\TenanMiddleware::class]); +Route::get("/{tenant}/{gallery}", [\App\Http\Controllers\PublicController::class, 'listGalleryImagesView'])->middleware([\App\Http\Middleware\TenanMiddleware::class]); +Route::get("/{tenant}/{gallery}/{image}/file", [\App\Http\Controllers\PublicController::class, 'returnImageFile']); + + +Route::get('/', function () { + return redirect("/login"); }); diff --git a/storage/cache/cache_1_1_10_big b/storage/cache/cache_1_1_10_big new file mode 100644 index 0000000..404e051 Binary files /dev/null and b/storage/cache/cache_1_1_10_big differ diff --git a/storage/cache/cache_1_1_10_medium b/storage/cache/cache_1_1_10_medium new file mode 100644 index 0000000..b447684 Binary files /dev/null and b/storage/cache/cache_1_1_10_medium differ diff --git a/storage/cache/cache_1_1_10_orginal b/storage/cache/cache_1_1_10_orginal new file mode 100644 index 0000000..0fe0eb7 Binary files /dev/null and b/storage/cache/cache_1_1_10_orginal differ diff --git a/storage/cache/cache_1_1_10_small b/storage/cache/cache_1_1_10_small new file mode 100644 index 0000000..3de6919 Binary files /dev/null and b/storage/cache/cache_1_1_10_small differ diff --git a/storage/cache/cache_1_1_11_big b/storage/cache/cache_1_1_11_big new file mode 100644 index 0000000..32b248d Binary files /dev/null and b/storage/cache/cache_1_1_11_big differ diff --git a/storage/cache/cache_1_1_11_medium b/storage/cache/cache_1_1_11_medium new file mode 100644 index 0000000..71663a4 Binary files /dev/null and b/storage/cache/cache_1_1_11_medium differ diff --git a/storage/cache/cache_1_1_11_orginal b/storage/cache/cache_1_1_11_orginal new file mode 100644 index 0000000..2283715 Binary files /dev/null and b/storage/cache/cache_1_1_11_orginal differ diff --git a/storage/cache/cache_1_1_11_small b/storage/cache/cache_1_1_11_small new file mode 100644 index 0000000..01aac37 Binary files /dev/null and b/storage/cache/cache_1_1_11_small differ diff --git a/storage/cache/cache_1_1_12_big b/storage/cache/cache_1_1_12_big new file mode 100644 index 0000000..ba0a29e Binary files /dev/null and b/storage/cache/cache_1_1_12_big differ diff --git a/storage/cache/cache_1_1_12_medium b/storage/cache/cache_1_1_12_medium new file mode 100644 index 0000000..d5771c7 Binary files /dev/null and b/storage/cache/cache_1_1_12_medium differ diff --git a/storage/cache/cache_1_1_12_orginal b/storage/cache/cache_1_1_12_orginal new file mode 100644 index 0000000..7756fd7 Binary files /dev/null and b/storage/cache/cache_1_1_12_orginal differ diff --git a/storage/cache/cache_1_1_12_small b/storage/cache/cache_1_1_12_small new file mode 100644 index 0000000..ab5dcaa Binary files /dev/null and b/storage/cache/cache_1_1_12_small differ diff --git a/storage/cache/cache_1_1_13_big b/storage/cache/cache_1_1_13_big new file mode 100644 index 0000000..a73fae6 Binary files /dev/null and b/storage/cache/cache_1_1_13_big differ diff --git a/storage/cache/cache_1_1_13_medium b/storage/cache/cache_1_1_13_medium new file mode 100644 index 0000000..0a55879 Binary files /dev/null and b/storage/cache/cache_1_1_13_medium differ diff --git a/storage/cache/cache_1_1_13_orginal b/storage/cache/cache_1_1_13_orginal new file mode 100644 index 0000000..6613277 Binary files /dev/null and b/storage/cache/cache_1_1_13_orginal differ diff --git a/storage/cache/cache_1_1_13_small b/storage/cache/cache_1_1_13_small new file mode 100644 index 0000000..7eb1778 Binary files /dev/null and b/storage/cache/cache_1_1_13_small differ diff --git a/storage/cache/cache_1_1_14_big b/storage/cache/cache_1_1_14_big new file mode 100644 index 0000000..544f678 Binary files /dev/null and b/storage/cache/cache_1_1_14_big differ diff --git a/storage/cache/cache_1_1_14_medium b/storage/cache/cache_1_1_14_medium new file mode 100644 index 0000000..78811ca Binary files /dev/null and b/storage/cache/cache_1_1_14_medium differ diff --git a/storage/cache/cache_1_1_14_orginal b/storage/cache/cache_1_1_14_orginal new file mode 100644 index 0000000..6fb8e2d Binary files /dev/null and b/storage/cache/cache_1_1_14_orginal differ diff --git a/storage/cache/cache_1_1_14_small b/storage/cache/cache_1_1_14_small new file mode 100644 index 0000000..d42fdb5 Binary files /dev/null and b/storage/cache/cache_1_1_14_small differ diff --git a/storage/cache/cache_1_1_15_big b/storage/cache/cache_1_1_15_big new file mode 100644 index 0000000..a17ab03 Binary files /dev/null and b/storage/cache/cache_1_1_15_big differ diff --git a/storage/cache/cache_1_1_15_medium b/storage/cache/cache_1_1_15_medium new file mode 100644 index 0000000..255b6e5 Binary files /dev/null and b/storage/cache/cache_1_1_15_medium differ diff --git a/storage/cache/cache_1_1_15_orginal b/storage/cache/cache_1_1_15_orginal new file mode 100644 index 0000000..4d25036 Binary files /dev/null and b/storage/cache/cache_1_1_15_orginal differ diff --git a/storage/cache/cache_1_1_15_small b/storage/cache/cache_1_1_15_small new file mode 100644 index 0000000..52b6c98 Binary files /dev/null and b/storage/cache/cache_1_1_15_small differ diff --git a/storage/cache/cache_1_1_16_big b/storage/cache/cache_1_1_16_big new file mode 100644 index 0000000..4b0e319 Binary files /dev/null and b/storage/cache/cache_1_1_16_big differ diff --git a/storage/cache/cache_1_1_16_medium b/storage/cache/cache_1_1_16_medium new file mode 100644 index 0000000..4800ae5 Binary files /dev/null and b/storage/cache/cache_1_1_16_medium differ diff --git a/storage/cache/cache_1_1_16_orginal b/storage/cache/cache_1_1_16_orginal new file mode 100644 index 0000000..f84036b Binary files /dev/null and b/storage/cache/cache_1_1_16_orginal differ diff --git a/storage/cache/cache_1_1_16_small b/storage/cache/cache_1_1_16_small new file mode 100644 index 0000000..2b49094 Binary files /dev/null and b/storage/cache/cache_1_1_16_small differ diff --git a/storage/cache/cache_1_1_17_big b/storage/cache/cache_1_1_17_big new file mode 100644 index 0000000..bbd8691 Binary files /dev/null and b/storage/cache/cache_1_1_17_big differ diff --git a/storage/cache/cache_1_1_17_medium b/storage/cache/cache_1_1_17_medium new file mode 100644 index 0000000..ad76187 Binary files /dev/null and b/storage/cache/cache_1_1_17_medium differ diff --git a/storage/cache/cache_1_1_17_orginal b/storage/cache/cache_1_1_17_orginal new file mode 100644 index 0000000..18578af Binary files /dev/null and b/storage/cache/cache_1_1_17_orginal differ diff --git a/storage/cache/cache_1_1_17_small b/storage/cache/cache_1_1_17_small new file mode 100644 index 0000000..cb63aa3 Binary files /dev/null and b/storage/cache/cache_1_1_17_small differ diff --git a/storage/cache/cache_1_1_18_big b/storage/cache/cache_1_1_18_big new file mode 100644 index 0000000..81c67db Binary files /dev/null and b/storage/cache/cache_1_1_18_big differ diff --git a/storage/cache/cache_1_1_18_medium b/storage/cache/cache_1_1_18_medium new file mode 100644 index 0000000..b3e3863 Binary files /dev/null and b/storage/cache/cache_1_1_18_medium differ diff --git a/storage/cache/cache_1_1_18_orginal b/storage/cache/cache_1_1_18_orginal new file mode 100644 index 0000000..08acb25 Binary files /dev/null and b/storage/cache/cache_1_1_18_orginal differ diff --git a/storage/cache/cache_1_1_18_small b/storage/cache/cache_1_1_18_small new file mode 100644 index 0000000..832dbbe Binary files /dev/null and b/storage/cache/cache_1_1_18_small differ diff --git a/storage/cache/cache_1_1_19_big b/storage/cache/cache_1_1_19_big new file mode 100644 index 0000000..a0851eb Binary files /dev/null and b/storage/cache/cache_1_1_19_big differ diff --git a/storage/cache/cache_1_1_19_medium b/storage/cache/cache_1_1_19_medium new file mode 100644 index 0000000..bf881dd Binary files /dev/null and b/storage/cache/cache_1_1_19_medium differ diff --git a/storage/cache/cache_1_1_19_orginal b/storage/cache/cache_1_1_19_orginal new file mode 100644 index 0000000..916fa25 Binary files /dev/null and b/storage/cache/cache_1_1_19_orginal differ diff --git a/storage/cache/cache_1_1_19_small b/storage/cache/cache_1_1_19_small new file mode 100644 index 0000000..eedf6fe Binary files /dev/null and b/storage/cache/cache_1_1_19_small differ diff --git a/storage/cache/cache_1_1_1_big b/storage/cache/cache_1_1_1_big new file mode 100644 index 0000000..acb9848 Binary files /dev/null and b/storage/cache/cache_1_1_1_big differ diff --git a/storage/cache/cache_1_1_1_medium b/storage/cache/cache_1_1_1_medium new file mode 100644 index 0000000..1e2bec5 Binary files /dev/null and b/storage/cache/cache_1_1_1_medium differ diff --git a/storage/cache/cache_1_1_1_orginal b/storage/cache/cache_1_1_1_orginal new file mode 100644 index 0000000..3f0300f Binary files /dev/null and b/storage/cache/cache_1_1_1_orginal differ diff --git a/storage/cache/cache_1_1_1_small b/storage/cache/cache_1_1_1_small new file mode 100644 index 0000000..9a6a726 Binary files /dev/null and b/storage/cache/cache_1_1_1_small differ diff --git a/storage/cache/cache_1_1_20_big b/storage/cache/cache_1_1_20_big new file mode 100644 index 0000000..abde941 Binary files /dev/null and b/storage/cache/cache_1_1_20_big differ diff --git a/storage/cache/cache_1_1_20_medium b/storage/cache/cache_1_1_20_medium new file mode 100644 index 0000000..3ace5cf Binary files /dev/null and b/storage/cache/cache_1_1_20_medium differ diff --git a/storage/cache/cache_1_1_20_orginal b/storage/cache/cache_1_1_20_orginal new file mode 100644 index 0000000..2f9a965 Binary files /dev/null and b/storage/cache/cache_1_1_20_orginal differ diff --git a/storage/cache/cache_1_1_20_small b/storage/cache/cache_1_1_20_small new file mode 100644 index 0000000..4c5255e Binary files /dev/null and b/storage/cache/cache_1_1_20_small differ diff --git a/storage/cache/cache_1_1_21_big b/storage/cache/cache_1_1_21_big new file mode 100644 index 0000000..3ea499a Binary files /dev/null and b/storage/cache/cache_1_1_21_big differ diff --git a/storage/cache/cache_1_1_21_medium b/storage/cache/cache_1_1_21_medium new file mode 100644 index 0000000..9a3f55e Binary files /dev/null and b/storage/cache/cache_1_1_21_medium differ diff --git a/storage/cache/cache_1_1_21_orginal b/storage/cache/cache_1_1_21_orginal new file mode 100644 index 0000000..5f143c9 Binary files /dev/null and b/storage/cache/cache_1_1_21_orginal differ diff --git a/storage/cache/cache_1_1_21_small b/storage/cache/cache_1_1_21_small new file mode 100644 index 0000000..cccf66c Binary files /dev/null and b/storage/cache/cache_1_1_21_small differ diff --git a/storage/cache/cache_1_1_22_big b/storage/cache/cache_1_1_22_big new file mode 100644 index 0000000..a7af1a4 Binary files /dev/null and b/storage/cache/cache_1_1_22_big differ diff --git a/storage/cache/cache_1_1_22_medium b/storage/cache/cache_1_1_22_medium new file mode 100644 index 0000000..59e2a3f Binary files /dev/null and b/storage/cache/cache_1_1_22_medium differ diff --git a/storage/cache/cache_1_1_22_orginal b/storage/cache/cache_1_1_22_orginal new file mode 100644 index 0000000..72c380d Binary files /dev/null and b/storage/cache/cache_1_1_22_orginal differ diff --git a/storage/cache/cache_1_1_22_small b/storage/cache/cache_1_1_22_small new file mode 100644 index 0000000..fa9abcc Binary files /dev/null and b/storage/cache/cache_1_1_22_small differ diff --git a/storage/cache/cache_1_1_23_big b/storage/cache/cache_1_1_23_big new file mode 100644 index 0000000..ebef07a Binary files /dev/null and b/storage/cache/cache_1_1_23_big differ diff --git a/storage/cache/cache_1_1_23_medium b/storage/cache/cache_1_1_23_medium new file mode 100644 index 0000000..5287a92 Binary files /dev/null and b/storage/cache/cache_1_1_23_medium differ diff --git a/storage/cache/cache_1_1_23_orginal b/storage/cache/cache_1_1_23_orginal new file mode 100644 index 0000000..5368e79 Binary files /dev/null and b/storage/cache/cache_1_1_23_orginal differ diff --git a/storage/cache/cache_1_1_23_small b/storage/cache/cache_1_1_23_small new file mode 100644 index 0000000..ec94e1e Binary files /dev/null and b/storage/cache/cache_1_1_23_small differ diff --git a/storage/cache/cache_1_1_24_big b/storage/cache/cache_1_1_24_big new file mode 100644 index 0000000..a1414b4 Binary files /dev/null and b/storage/cache/cache_1_1_24_big differ diff --git a/storage/cache/cache_1_1_24_medium b/storage/cache/cache_1_1_24_medium new file mode 100644 index 0000000..cc0d1e7 Binary files /dev/null and b/storage/cache/cache_1_1_24_medium differ diff --git a/storage/cache/cache_1_1_24_orginal b/storage/cache/cache_1_1_24_orginal new file mode 100644 index 0000000..37ff158 Binary files /dev/null and b/storage/cache/cache_1_1_24_orginal differ diff --git a/storage/cache/cache_1_1_24_small b/storage/cache/cache_1_1_24_small new file mode 100644 index 0000000..4baf103 Binary files /dev/null and b/storage/cache/cache_1_1_24_small differ diff --git a/storage/cache/cache_1_1_25_big b/storage/cache/cache_1_1_25_big new file mode 100644 index 0000000..9042332 Binary files /dev/null and b/storage/cache/cache_1_1_25_big differ diff --git a/storage/cache/cache_1_1_25_medium b/storage/cache/cache_1_1_25_medium new file mode 100644 index 0000000..5b88485 Binary files /dev/null and b/storage/cache/cache_1_1_25_medium differ diff --git a/storage/cache/cache_1_1_25_orginal b/storage/cache/cache_1_1_25_orginal new file mode 100644 index 0000000..262a707 Binary files /dev/null and b/storage/cache/cache_1_1_25_orginal differ diff --git a/storage/cache/cache_1_1_25_small b/storage/cache/cache_1_1_25_small new file mode 100644 index 0000000..2375d12 Binary files /dev/null and b/storage/cache/cache_1_1_25_small differ diff --git a/storage/cache/cache_1_1_26_big b/storage/cache/cache_1_1_26_big new file mode 100644 index 0000000..e1af127 Binary files /dev/null and b/storage/cache/cache_1_1_26_big differ diff --git a/storage/cache/cache_1_1_26_medium b/storage/cache/cache_1_1_26_medium new file mode 100644 index 0000000..24e822f Binary files /dev/null and b/storage/cache/cache_1_1_26_medium differ diff --git a/storage/cache/cache_1_1_26_orginal b/storage/cache/cache_1_1_26_orginal new file mode 100644 index 0000000..c189f2c Binary files /dev/null and b/storage/cache/cache_1_1_26_orginal differ diff --git a/storage/cache/cache_1_1_26_small b/storage/cache/cache_1_1_26_small new file mode 100644 index 0000000..6b6ff75 Binary files /dev/null and b/storage/cache/cache_1_1_26_small differ diff --git a/storage/cache/cache_1_1_27_big b/storage/cache/cache_1_1_27_big new file mode 100644 index 0000000..6e03893 Binary files /dev/null and b/storage/cache/cache_1_1_27_big differ diff --git a/storage/cache/cache_1_1_27_medium b/storage/cache/cache_1_1_27_medium new file mode 100644 index 0000000..fc00771 Binary files /dev/null and b/storage/cache/cache_1_1_27_medium differ diff --git a/storage/cache/cache_1_1_27_orginal b/storage/cache/cache_1_1_27_orginal new file mode 100644 index 0000000..218989b Binary files /dev/null and b/storage/cache/cache_1_1_27_orginal differ diff --git a/storage/cache/cache_1_1_27_small b/storage/cache/cache_1_1_27_small new file mode 100644 index 0000000..e3ca9e2 Binary files /dev/null and b/storage/cache/cache_1_1_27_small differ diff --git a/storage/cache/cache_1_1_28_big b/storage/cache/cache_1_1_28_big new file mode 100644 index 0000000..ee2e353 Binary files /dev/null and b/storage/cache/cache_1_1_28_big differ diff --git a/storage/cache/cache_1_1_28_medium b/storage/cache/cache_1_1_28_medium new file mode 100644 index 0000000..73194d4 Binary files /dev/null and b/storage/cache/cache_1_1_28_medium differ diff --git a/storage/cache/cache_1_1_28_orginal b/storage/cache/cache_1_1_28_orginal new file mode 100644 index 0000000..39acb3b Binary files /dev/null and b/storage/cache/cache_1_1_28_orginal differ diff --git a/storage/cache/cache_1_1_28_small b/storage/cache/cache_1_1_28_small new file mode 100644 index 0000000..54b360f Binary files /dev/null and b/storage/cache/cache_1_1_28_small differ diff --git a/storage/cache/cache_1_1_29_big b/storage/cache/cache_1_1_29_big new file mode 100644 index 0000000..f0b1bcd Binary files /dev/null and b/storage/cache/cache_1_1_29_big differ diff --git a/storage/cache/cache_1_1_29_medium b/storage/cache/cache_1_1_29_medium new file mode 100644 index 0000000..3e33780 Binary files /dev/null and b/storage/cache/cache_1_1_29_medium differ diff --git a/storage/cache/cache_1_1_29_orginal b/storage/cache/cache_1_1_29_orginal new file mode 100644 index 0000000..3f13920 Binary files /dev/null and b/storage/cache/cache_1_1_29_orginal differ diff --git a/storage/cache/cache_1_1_29_small b/storage/cache/cache_1_1_29_small new file mode 100644 index 0000000..b6597fd Binary files /dev/null and b/storage/cache/cache_1_1_29_small differ diff --git a/storage/cache/cache_1_1_2_big b/storage/cache/cache_1_1_2_big new file mode 100644 index 0000000..30aafa0 Binary files /dev/null and b/storage/cache/cache_1_1_2_big differ diff --git a/storage/cache/cache_1_1_2_medium b/storage/cache/cache_1_1_2_medium new file mode 100644 index 0000000..86ae125 Binary files /dev/null and b/storage/cache/cache_1_1_2_medium differ diff --git a/storage/cache/cache_1_1_2_orginal b/storage/cache/cache_1_1_2_orginal new file mode 100644 index 0000000..fb0b574 Binary files /dev/null and b/storage/cache/cache_1_1_2_orginal differ diff --git a/storage/cache/cache_1_1_2_small b/storage/cache/cache_1_1_2_small new file mode 100644 index 0000000..be3d548 Binary files /dev/null and b/storage/cache/cache_1_1_2_small differ diff --git a/storage/cache/cache_1_1_30_big b/storage/cache/cache_1_1_30_big new file mode 100644 index 0000000..fe8220a Binary files /dev/null and b/storage/cache/cache_1_1_30_big differ diff --git a/storage/cache/cache_1_1_30_medium b/storage/cache/cache_1_1_30_medium new file mode 100644 index 0000000..d4daf89 Binary files /dev/null and b/storage/cache/cache_1_1_30_medium differ diff --git a/storage/cache/cache_1_1_30_orginal b/storage/cache/cache_1_1_30_orginal new file mode 100644 index 0000000..92e0459 Binary files /dev/null and b/storage/cache/cache_1_1_30_orginal differ diff --git a/storage/cache/cache_1_1_30_small b/storage/cache/cache_1_1_30_small new file mode 100644 index 0000000..5e00b6f Binary files /dev/null and b/storage/cache/cache_1_1_30_small differ diff --git a/storage/cache/cache_1_1_31_big b/storage/cache/cache_1_1_31_big new file mode 100644 index 0000000..666849b Binary files /dev/null and b/storage/cache/cache_1_1_31_big differ diff --git a/storage/cache/cache_1_1_31_medium b/storage/cache/cache_1_1_31_medium new file mode 100644 index 0000000..70b2168 Binary files /dev/null and b/storage/cache/cache_1_1_31_medium differ diff --git a/storage/cache/cache_1_1_31_orginal b/storage/cache/cache_1_1_31_orginal new file mode 100644 index 0000000..33236da Binary files /dev/null and b/storage/cache/cache_1_1_31_orginal differ diff --git a/storage/cache/cache_1_1_31_small b/storage/cache/cache_1_1_31_small new file mode 100644 index 0000000..fab4467 Binary files /dev/null and b/storage/cache/cache_1_1_31_small differ diff --git a/storage/cache/cache_1_1_32_big b/storage/cache/cache_1_1_32_big new file mode 100644 index 0000000..7e91fa9 Binary files /dev/null and b/storage/cache/cache_1_1_32_big differ diff --git a/storage/cache/cache_1_1_32_medium b/storage/cache/cache_1_1_32_medium new file mode 100644 index 0000000..1a532a4 Binary files /dev/null and b/storage/cache/cache_1_1_32_medium differ diff --git a/storage/cache/cache_1_1_32_orginal b/storage/cache/cache_1_1_32_orginal new file mode 100644 index 0000000..8036d05 Binary files /dev/null and b/storage/cache/cache_1_1_32_orginal differ diff --git a/storage/cache/cache_1_1_32_small b/storage/cache/cache_1_1_32_small new file mode 100644 index 0000000..0dd3f8b Binary files /dev/null and b/storage/cache/cache_1_1_32_small differ diff --git a/storage/cache/cache_1_1_33_big b/storage/cache/cache_1_1_33_big new file mode 100644 index 0000000..7aa6451 Binary files /dev/null and b/storage/cache/cache_1_1_33_big differ diff --git a/storage/cache/cache_1_1_33_medium b/storage/cache/cache_1_1_33_medium new file mode 100644 index 0000000..24984c0 Binary files /dev/null and b/storage/cache/cache_1_1_33_medium differ diff --git a/storage/cache/cache_1_1_33_orginal b/storage/cache/cache_1_1_33_orginal new file mode 100644 index 0000000..c862d01 Binary files /dev/null and b/storage/cache/cache_1_1_33_orginal differ diff --git a/storage/cache/cache_1_1_33_small b/storage/cache/cache_1_1_33_small new file mode 100644 index 0000000..600c6b9 Binary files /dev/null and b/storage/cache/cache_1_1_33_small differ diff --git a/storage/cache/cache_1_1_34_big b/storage/cache/cache_1_1_34_big new file mode 100644 index 0000000..e3f53eb Binary files /dev/null and b/storage/cache/cache_1_1_34_big differ diff --git a/storage/cache/cache_1_1_34_medium b/storage/cache/cache_1_1_34_medium new file mode 100644 index 0000000..eeb001b Binary files /dev/null and b/storage/cache/cache_1_1_34_medium differ diff --git a/storage/cache/cache_1_1_34_orginal b/storage/cache/cache_1_1_34_orginal new file mode 100644 index 0000000..9c501f0 Binary files /dev/null and b/storage/cache/cache_1_1_34_orginal differ diff --git a/storage/cache/cache_1_1_34_small b/storage/cache/cache_1_1_34_small new file mode 100644 index 0000000..5170fb6 Binary files /dev/null and b/storage/cache/cache_1_1_34_small differ diff --git a/storage/cache/cache_1_1_35_big b/storage/cache/cache_1_1_35_big new file mode 100644 index 0000000..e0709ba Binary files /dev/null and b/storage/cache/cache_1_1_35_big differ diff --git a/storage/cache/cache_1_1_35_medium b/storage/cache/cache_1_1_35_medium new file mode 100644 index 0000000..d2dad59 Binary files /dev/null and b/storage/cache/cache_1_1_35_medium differ diff --git a/storage/cache/cache_1_1_35_orginal b/storage/cache/cache_1_1_35_orginal new file mode 100644 index 0000000..e9eab56 Binary files /dev/null and b/storage/cache/cache_1_1_35_orginal differ diff --git a/storage/cache/cache_1_1_35_small b/storage/cache/cache_1_1_35_small new file mode 100644 index 0000000..7fa8a17 Binary files /dev/null and b/storage/cache/cache_1_1_35_small differ diff --git a/storage/cache/cache_1_1_36_big b/storage/cache/cache_1_1_36_big new file mode 100644 index 0000000..3c3cde6 Binary files /dev/null and b/storage/cache/cache_1_1_36_big differ diff --git a/storage/cache/cache_1_1_36_medium b/storage/cache/cache_1_1_36_medium new file mode 100644 index 0000000..678f66b Binary files /dev/null and b/storage/cache/cache_1_1_36_medium differ diff --git a/storage/cache/cache_1_1_36_orginal b/storage/cache/cache_1_1_36_orginal new file mode 100644 index 0000000..6cc401b Binary files /dev/null and b/storage/cache/cache_1_1_36_orginal differ diff --git a/storage/cache/cache_1_1_36_small b/storage/cache/cache_1_1_36_small new file mode 100644 index 0000000..1c054c9 Binary files /dev/null and b/storage/cache/cache_1_1_36_small differ diff --git a/storage/cache/cache_1_1_37_big b/storage/cache/cache_1_1_37_big new file mode 100644 index 0000000..39ffdba Binary files /dev/null and b/storage/cache/cache_1_1_37_big differ diff --git a/storage/cache/cache_1_1_37_medium b/storage/cache/cache_1_1_37_medium new file mode 100644 index 0000000..c866187 Binary files /dev/null and b/storage/cache/cache_1_1_37_medium differ diff --git a/storage/cache/cache_1_1_37_orginal b/storage/cache/cache_1_1_37_orginal new file mode 100644 index 0000000..a97840a Binary files /dev/null and b/storage/cache/cache_1_1_37_orginal differ diff --git a/storage/cache/cache_1_1_37_small b/storage/cache/cache_1_1_37_small new file mode 100644 index 0000000..aac82a6 Binary files /dev/null and b/storage/cache/cache_1_1_37_small differ diff --git a/storage/cache/cache_1_1_38_big b/storage/cache/cache_1_1_38_big new file mode 100644 index 0000000..44b233c Binary files /dev/null and b/storage/cache/cache_1_1_38_big differ diff --git a/storage/cache/cache_1_1_38_medium b/storage/cache/cache_1_1_38_medium new file mode 100644 index 0000000..d52bb2e Binary files /dev/null and b/storage/cache/cache_1_1_38_medium differ diff --git a/storage/cache/cache_1_1_38_orginal b/storage/cache/cache_1_1_38_orginal new file mode 100644 index 0000000..8ccc927 Binary files /dev/null and b/storage/cache/cache_1_1_38_orginal differ diff --git a/storage/cache/cache_1_1_38_small b/storage/cache/cache_1_1_38_small new file mode 100644 index 0000000..ca22fd0 Binary files /dev/null and b/storage/cache/cache_1_1_38_small differ diff --git a/storage/cache/cache_1_1_39_big b/storage/cache/cache_1_1_39_big new file mode 100644 index 0000000..9c4080f Binary files /dev/null and b/storage/cache/cache_1_1_39_big differ diff --git a/storage/cache/cache_1_1_39_medium b/storage/cache/cache_1_1_39_medium new file mode 100644 index 0000000..d2accda Binary files /dev/null and b/storage/cache/cache_1_1_39_medium differ diff --git a/storage/cache/cache_1_1_39_orginal b/storage/cache/cache_1_1_39_orginal new file mode 100644 index 0000000..fd5929c Binary files /dev/null and b/storage/cache/cache_1_1_39_orginal differ diff --git a/storage/cache/cache_1_1_39_small b/storage/cache/cache_1_1_39_small new file mode 100644 index 0000000..452c7a3 Binary files /dev/null and b/storage/cache/cache_1_1_39_small differ diff --git a/storage/cache/cache_1_1_3_big b/storage/cache/cache_1_1_3_big new file mode 100644 index 0000000..f4ff29f Binary files /dev/null and b/storage/cache/cache_1_1_3_big differ diff --git a/storage/cache/cache_1_1_3_medium b/storage/cache/cache_1_1_3_medium new file mode 100644 index 0000000..5486ea8 Binary files /dev/null and b/storage/cache/cache_1_1_3_medium differ diff --git a/storage/cache/cache_1_1_3_orginal b/storage/cache/cache_1_1_3_orginal new file mode 100644 index 0000000..ba35a72 Binary files /dev/null and b/storage/cache/cache_1_1_3_orginal differ diff --git a/storage/cache/cache_1_1_3_small b/storage/cache/cache_1_1_3_small new file mode 100644 index 0000000..c9355f7 Binary files /dev/null and b/storage/cache/cache_1_1_3_small differ diff --git a/storage/cache/cache_1_1_40_big b/storage/cache/cache_1_1_40_big new file mode 100644 index 0000000..e286d50 Binary files /dev/null and b/storage/cache/cache_1_1_40_big differ diff --git a/storage/cache/cache_1_1_40_medium b/storage/cache/cache_1_1_40_medium new file mode 100644 index 0000000..865ec81 Binary files /dev/null and b/storage/cache/cache_1_1_40_medium differ diff --git a/storage/cache/cache_1_1_40_orginal b/storage/cache/cache_1_1_40_orginal new file mode 100644 index 0000000..660bb41 Binary files /dev/null and b/storage/cache/cache_1_1_40_orginal differ diff --git a/storage/cache/cache_1_1_40_small b/storage/cache/cache_1_1_40_small new file mode 100644 index 0000000..45bc4ea Binary files /dev/null and b/storage/cache/cache_1_1_40_small differ diff --git a/storage/cache/cache_1_1_41_big b/storage/cache/cache_1_1_41_big new file mode 100644 index 0000000..f088212 Binary files /dev/null and b/storage/cache/cache_1_1_41_big differ diff --git a/storage/cache/cache_1_1_41_medium b/storage/cache/cache_1_1_41_medium new file mode 100644 index 0000000..1faa420 Binary files /dev/null and b/storage/cache/cache_1_1_41_medium differ diff --git a/storage/cache/cache_1_1_41_orginal b/storage/cache/cache_1_1_41_orginal new file mode 100644 index 0000000..7735185 Binary files /dev/null and b/storage/cache/cache_1_1_41_orginal differ diff --git a/storage/cache/cache_1_1_41_small b/storage/cache/cache_1_1_41_small new file mode 100644 index 0000000..1169d4f Binary files /dev/null and b/storage/cache/cache_1_1_41_small differ diff --git a/storage/cache/cache_1_1_42_big b/storage/cache/cache_1_1_42_big new file mode 100644 index 0000000..11a3351 Binary files /dev/null and b/storage/cache/cache_1_1_42_big differ diff --git a/storage/cache/cache_1_1_42_medium b/storage/cache/cache_1_1_42_medium new file mode 100644 index 0000000..bc440ad Binary files /dev/null and b/storage/cache/cache_1_1_42_medium differ diff --git a/storage/cache/cache_1_1_42_orginal b/storage/cache/cache_1_1_42_orginal new file mode 100644 index 0000000..d98ea2d Binary files /dev/null and b/storage/cache/cache_1_1_42_orginal differ diff --git a/storage/cache/cache_1_1_42_small b/storage/cache/cache_1_1_42_small new file mode 100644 index 0000000..63ee37f Binary files /dev/null and b/storage/cache/cache_1_1_42_small differ diff --git a/storage/cache/cache_1_1_43_big b/storage/cache/cache_1_1_43_big new file mode 100644 index 0000000..bcc2934 Binary files /dev/null and b/storage/cache/cache_1_1_43_big differ diff --git a/storage/cache/cache_1_1_43_medium b/storage/cache/cache_1_1_43_medium new file mode 100644 index 0000000..01f4f37 Binary files /dev/null and b/storage/cache/cache_1_1_43_medium differ diff --git a/storage/cache/cache_1_1_43_orginal b/storage/cache/cache_1_1_43_orginal new file mode 100644 index 0000000..8579e14 Binary files /dev/null and b/storage/cache/cache_1_1_43_orginal differ diff --git a/storage/cache/cache_1_1_43_small b/storage/cache/cache_1_1_43_small new file mode 100644 index 0000000..2342f2a Binary files /dev/null and b/storage/cache/cache_1_1_43_small differ diff --git a/storage/cache/cache_1_1_44_big b/storage/cache/cache_1_1_44_big new file mode 100644 index 0000000..97e635f Binary files /dev/null and b/storage/cache/cache_1_1_44_big differ diff --git a/storage/cache/cache_1_1_44_medium b/storage/cache/cache_1_1_44_medium new file mode 100644 index 0000000..4fcfb09 Binary files /dev/null and b/storage/cache/cache_1_1_44_medium differ diff --git a/storage/cache/cache_1_1_44_orginal b/storage/cache/cache_1_1_44_orginal new file mode 100644 index 0000000..498c359 Binary files /dev/null and b/storage/cache/cache_1_1_44_orginal differ diff --git a/storage/cache/cache_1_1_44_small b/storage/cache/cache_1_1_44_small new file mode 100644 index 0000000..4c3ec8b Binary files /dev/null and b/storage/cache/cache_1_1_44_small differ diff --git a/storage/cache/cache_1_1_45_big b/storage/cache/cache_1_1_45_big new file mode 100644 index 0000000..7707dd9 Binary files /dev/null and b/storage/cache/cache_1_1_45_big differ diff --git a/storage/cache/cache_1_1_45_medium b/storage/cache/cache_1_1_45_medium new file mode 100644 index 0000000..65a9518 Binary files /dev/null and b/storage/cache/cache_1_1_45_medium differ diff --git a/storage/cache/cache_1_1_45_orginal b/storage/cache/cache_1_1_45_orginal new file mode 100644 index 0000000..212ea08 Binary files /dev/null and b/storage/cache/cache_1_1_45_orginal differ diff --git a/storage/cache/cache_1_1_45_small b/storage/cache/cache_1_1_45_small new file mode 100644 index 0000000..d5d5dae Binary files /dev/null and b/storage/cache/cache_1_1_45_small differ diff --git a/storage/cache/cache_1_1_46_big b/storage/cache/cache_1_1_46_big new file mode 100644 index 0000000..fb1086f Binary files /dev/null and b/storage/cache/cache_1_1_46_big differ diff --git a/storage/cache/cache_1_1_46_medium b/storage/cache/cache_1_1_46_medium new file mode 100644 index 0000000..0e2168b Binary files /dev/null and b/storage/cache/cache_1_1_46_medium differ diff --git a/storage/cache/cache_1_1_46_orginal b/storage/cache/cache_1_1_46_orginal new file mode 100644 index 0000000..9e91f84 Binary files /dev/null and b/storage/cache/cache_1_1_46_orginal differ diff --git a/storage/cache/cache_1_1_46_small b/storage/cache/cache_1_1_46_small new file mode 100644 index 0000000..41176c9 Binary files /dev/null and b/storage/cache/cache_1_1_46_small differ diff --git a/storage/cache/cache_1_1_47_big b/storage/cache/cache_1_1_47_big new file mode 100644 index 0000000..f21daac Binary files /dev/null and b/storage/cache/cache_1_1_47_big differ diff --git a/storage/cache/cache_1_1_47_medium b/storage/cache/cache_1_1_47_medium new file mode 100644 index 0000000..2dc967e Binary files /dev/null and b/storage/cache/cache_1_1_47_medium differ diff --git a/storage/cache/cache_1_1_47_orginal b/storage/cache/cache_1_1_47_orginal new file mode 100644 index 0000000..d198b90 Binary files /dev/null and b/storage/cache/cache_1_1_47_orginal differ diff --git a/storage/cache/cache_1_1_47_small b/storage/cache/cache_1_1_47_small new file mode 100644 index 0000000..438d076 Binary files /dev/null and b/storage/cache/cache_1_1_47_small differ diff --git a/storage/cache/cache_1_1_48_big b/storage/cache/cache_1_1_48_big new file mode 100644 index 0000000..1c43509 Binary files /dev/null and b/storage/cache/cache_1_1_48_big differ diff --git a/storage/cache/cache_1_1_48_medium b/storage/cache/cache_1_1_48_medium new file mode 100644 index 0000000..0b45372 Binary files /dev/null and b/storage/cache/cache_1_1_48_medium differ diff --git a/storage/cache/cache_1_1_48_orginal b/storage/cache/cache_1_1_48_orginal new file mode 100644 index 0000000..5c047da Binary files /dev/null and b/storage/cache/cache_1_1_48_orginal differ diff --git a/storage/cache/cache_1_1_48_small b/storage/cache/cache_1_1_48_small new file mode 100644 index 0000000..175f4a1 Binary files /dev/null and b/storage/cache/cache_1_1_48_small differ diff --git a/storage/cache/cache_1_1_49_big b/storage/cache/cache_1_1_49_big new file mode 100644 index 0000000..e74f9cd Binary files /dev/null and b/storage/cache/cache_1_1_49_big differ diff --git a/storage/cache/cache_1_1_49_medium b/storage/cache/cache_1_1_49_medium new file mode 100644 index 0000000..94ef449 Binary files /dev/null and b/storage/cache/cache_1_1_49_medium differ diff --git a/storage/cache/cache_1_1_49_orginal b/storage/cache/cache_1_1_49_orginal new file mode 100644 index 0000000..2609337 Binary files /dev/null and b/storage/cache/cache_1_1_49_orginal differ diff --git a/storage/cache/cache_1_1_49_small b/storage/cache/cache_1_1_49_small new file mode 100644 index 0000000..8f466e4 Binary files /dev/null and b/storage/cache/cache_1_1_49_small differ diff --git a/storage/cache/cache_1_1_4_big b/storage/cache/cache_1_1_4_big new file mode 100644 index 0000000..3acefec Binary files /dev/null and b/storage/cache/cache_1_1_4_big differ diff --git a/storage/cache/cache_1_1_4_medium b/storage/cache/cache_1_1_4_medium new file mode 100644 index 0000000..c45535b Binary files /dev/null and b/storage/cache/cache_1_1_4_medium differ diff --git a/storage/cache/cache_1_1_4_orginal b/storage/cache/cache_1_1_4_orginal new file mode 100644 index 0000000..40047c1 Binary files /dev/null and b/storage/cache/cache_1_1_4_orginal differ diff --git a/storage/cache/cache_1_1_4_small b/storage/cache/cache_1_1_4_small new file mode 100644 index 0000000..b322b23 Binary files /dev/null and b/storage/cache/cache_1_1_4_small differ diff --git a/storage/cache/cache_1_1_50_big b/storage/cache/cache_1_1_50_big new file mode 100644 index 0000000..5aac27c Binary files /dev/null and b/storage/cache/cache_1_1_50_big differ diff --git a/storage/cache/cache_1_1_50_medium b/storage/cache/cache_1_1_50_medium new file mode 100644 index 0000000..fc9493f Binary files /dev/null and b/storage/cache/cache_1_1_50_medium differ diff --git a/storage/cache/cache_1_1_50_orginal b/storage/cache/cache_1_1_50_orginal new file mode 100644 index 0000000..4c37c60 Binary files /dev/null and b/storage/cache/cache_1_1_50_orginal differ diff --git a/storage/cache/cache_1_1_50_small b/storage/cache/cache_1_1_50_small new file mode 100644 index 0000000..eb011b1 Binary files /dev/null and b/storage/cache/cache_1_1_50_small differ diff --git a/storage/cache/cache_1_1_51_big b/storage/cache/cache_1_1_51_big new file mode 100644 index 0000000..7b38d44 Binary files /dev/null and b/storage/cache/cache_1_1_51_big differ diff --git a/storage/cache/cache_1_1_51_medium b/storage/cache/cache_1_1_51_medium new file mode 100644 index 0000000..36ec9df Binary files /dev/null and b/storage/cache/cache_1_1_51_medium differ diff --git a/storage/cache/cache_1_1_51_orginal b/storage/cache/cache_1_1_51_orginal new file mode 100644 index 0000000..5847d0e Binary files /dev/null and b/storage/cache/cache_1_1_51_orginal differ diff --git a/storage/cache/cache_1_1_51_small b/storage/cache/cache_1_1_51_small new file mode 100644 index 0000000..54fbe15 Binary files /dev/null and b/storage/cache/cache_1_1_51_small differ diff --git a/storage/cache/cache_1_1_52_big b/storage/cache/cache_1_1_52_big new file mode 100644 index 0000000..c060722 Binary files /dev/null and b/storage/cache/cache_1_1_52_big differ diff --git a/storage/cache/cache_1_1_52_medium b/storage/cache/cache_1_1_52_medium new file mode 100644 index 0000000..21a49d7 Binary files /dev/null and b/storage/cache/cache_1_1_52_medium differ diff --git a/storage/cache/cache_1_1_52_orginal b/storage/cache/cache_1_1_52_orginal new file mode 100644 index 0000000..50d8f66 Binary files /dev/null and b/storage/cache/cache_1_1_52_orginal differ diff --git a/storage/cache/cache_1_1_52_small b/storage/cache/cache_1_1_52_small new file mode 100644 index 0000000..d5f6197 Binary files /dev/null and b/storage/cache/cache_1_1_52_small differ diff --git a/storage/cache/cache_1_1_53_big b/storage/cache/cache_1_1_53_big new file mode 100644 index 0000000..1984943 Binary files /dev/null and b/storage/cache/cache_1_1_53_big differ diff --git a/storage/cache/cache_1_1_53_medium b/storage/cache/cache_1_1_53_medium new file mode 100644 index 0000000..9fa7453 Binary files /dev/null and b/storage/cache/cache_1_1_53_medium differ diff --git a/storage/cache/cache_1_1_53_orginal b/storage/cache/cache_1_1_53_orginal new file mode 100644 index 0000000..6068d67 Binary files /dev/null and b/storage/cache/cache_1_1_53_orginal differ diff --git a/storage/cache/cache_1_1_53_small b/storage/cache/cache_1_1_53_small new file mode 100644 index 0000000..11fd5ba Binary files /dev/null and b/storage/cache/cache_1_1_53_small differ diff --git a/storage/cache/cache_1_1_54_big b/storage/cache/cache_1_1_54_big new file mode 100644 index 0000000..dca698f Binary files /dev/null and b/storage/cache/cache_1_1_54_big differ diff --git a/storage/cache/cache_1_1_54_medium b/storage/cache/cache_1_1_54_medium new file mode 100644 index 0000000..413d1d4 Binary files /dev/null and b/storage/cache/cache_1_1_54_medium differ diff --git a/storage/cache/cache_1_1_54_orginal b/storage/cache/cache_1_1_54_orginal new file mode 100644 index 0000000..d265008 Binary files /dev/null and b/storage/cache/cache_1_1_54_orginal differ diff --git a/storage/cache/cache_1_1_54_small b/storage/cache/cache_1_1_54_small new file mode 100644 index 0000000..4be220e Binary files /dev/null and b/storage/cache/cache_1_1_54_small differ diff --git a/storage/cache/cache_1_1_55_big b/storage/cache/cache_1_1_55_big new file mode 100644 index 0000000..538281b Binary files /dev/null and b/storage/cache/cache_1_1_55_big differ diff --git a/storage/cache/cache_1_1_55_medium b/storage/cache/cache_1_1_55_medium new file mode 100644 index 0000000..c4b1db8 Binary files /dev/null and b/storage/cache/cache_1_1_55_medium differ diff --git a/storage/cache/cache_1_1_55_orginal b/storage/cache/cache_1_1_55_orginal new file mode 100644 index 0000000..c24c2b5 Binary files /dev/null and b/storage/cache/cache_1_1_55_orginal differ diff --git a/storage/cache/cache_1_1_55_small b/storage/cache/cache_1_1_55_small new file mode 100644 index 0000000..f8b90a3 Binary files /dev/null and b/storage/cache/cache_1_1_55_small differ diff --git a/storage/cache/cache_1_1_56_big b/storage/cache/cache_1_1_56_big new file mode 100644 index 0000000..35f6c9b Binary files /dev/null and b/storage/cache/cache_1_1_56_big differ diff --git a/storage/cache/cache_1_1_56_medium b/storage/cache/cache_1_1_56_medium new file mode 100644 index 0000000..f85ce7a Binary files /dev/null and b/storage/cache/cache_1_1_56_medium differ diff --git a/storage/cache/cache_1_1_56_orginal b/storage/cache/cache_1_1_56_orginal new file mode 100644 index 0000000..1c621dc Binary files /dev/null and b/storage/cache/cache_1_1_56_orginal differ diff --git a/storage/cache/cache_1_1_56_small b/storage/cache/cache_1_1_56_small new file mode 100644 index 0000000..2fc59ec Binary files /dev/null and b/storage/cache/cache_1_1_56_small differ diff --git a/storage/cache/cache_1_1_57_big b/storage/cache/cache_1_1_57_big new file mode 100644 index 0000000..534f93a Binary files /dev/null and b/storage/cache/cache_1_1_57_big differ diff --git a/storage/cache/cache_1_1_57_medium b/storage/cache/cache_1_1_57_medium new file mode 100644 index 0000000..c5fcc62 Binary files /dev/null and b/storage/cache/cache_1_1_57_medium differ diff --git a/storage/cache/cache_1_1_57_orginal b/storage/cache/cache_1_1_57_orginal new file mode 100644 index 0000000..7c6fdd3 Binary files /dev/null and b/storage/cache/cache_1_1_57_orginal differ diff --git a/storage/cache/cache_1_1_57_small b/storage/cache/cache_1_1_57_small new file mode 100644 index 0000000..d3eb95e Binary files /dev/null and b/storage/cache/cache_1_1_57_small differ diff --git a/storage/cache/cache_1_1_58_big b/storage/cache/cache_1_1_58_big new file mode 100644 index 0000000..ea46d98 Binary files /dev/null and b/storage/cache/cache_1_1_58_big differ diff --git a/storage/cache/cache_1_1_58_medium b/storage/cache/cache_1_1_58_medium new file mode 100644 index 0000000..5e69467 Binary files /dev/null and b/storage/cache/cache_1_1_58_medium differ diff --git a/storage/cache/cache_1_1_58_orginal b/storage/cache/cache_1_1_58_orginal new file mode 100644 index 0000000..a647aa9 Binary files /dev/null and b/storage/cache/cache_1_1_58_orginal differ diff --git a/storage/cache/cache_1_1_58_small b/storage/cache/cache_1_1_58_small new file mode 100644 index 0000000..a14379c Binary files /dev/null and b/storage/cache/cache_1_1_58_small differ diff --git a/storage/cache/cache_1_1_59_big b/storage/cache/cache_1_1_59_big new file mode 100644 index 0000000..38896a8 Binary files /dev/null and b/storage/cache/cache_1_1_59_big differ diff --git a/storage/cache/cache_1_1_59_medium b/storage/cache/cache_1_1_59_medium new file mode 100644 index 0000000..c4f4062 Binary files /dev/null and b/storage/cache/cache_1_1_59_medium differ diff --git a/storage/cache/cache_1_1_59_orginal b/storage/cache/cache_1_1_59_orginal new file mode 100644 index 0000000..1152299 Binary files /dev/null and b/storage/cache/cache_1_1_59_orginal differ diff --git a/storage/cache/cache_1_1_59_small b/storage/cache/cache_1_1_59_small new file mode 100644 index 0000000..0da80cd Binary files /dev/null and b/storage/cache/cache_1_1_59_small differ diff --git a/storage/cache/cache_1_1_5_big b/storage/cache/cache_1_1_5_big new file mode 100644 index 0000000..94415bd Binary files /dev/null and b/storage/cache/cache_1_1_5_big differ diff --git a/storage/cache/cache_1_1_5_medium b/storage/cache/cache_1_1_5_medium new file mode 100644 index 0000000..e284970 Binary files /dev/null and b/storage/cache/cache_1_1_5_medium differ diff --git a/storage/cache/cache_1_1_5_orginal b/storage/cache/cache_1_1_5_orginal new file mode 100644 index 0000000..5b5edc0 Binary files /dev/null and b/storage/cache/cache_1_1_5_orginal differ diff --git a/storage/cache/cache_1_1_5_small b/storage/cache/cache_1_1_5_small new file mode 100644 index 0000000..de613f9 Binary files /dev/null and b/storage/cache/cache_1_1_5_small differ diff --git a/storage/cache/cache_1_1_60_big b/storage/cache/cache_1_1_60_big new file mode 100644 index 0000000..287e63e Binary files /dev/null and b/storage/cache/cache_1_1_60_big differ diff --git a/storage/cache/cache_1_1_60_medium b/storage/cache/cache_1_1_60_medium new file mode 100644 index 0000000..92608c6 Binary files /dev/null and b/storage/cache/cache_1_1_60_medium differ diff --git a/storage/cache/cache_1_1_60_orginal b/storage/cache/cache_1_1_60_orginal new file mode 100644 index 0000000..9a8a2ac Binary files /dev/null and b/storage/cache/cache_1_1_60_orginal differ diff --git a/storage/cache/cache_1_1_60_small b/storage/cache/cache_1_1_60_small new file mode 100644 index 0000000..6ebd986 Binary files /dev/null and b/storage/cache/cache_1_1_60_small differ diff --git a/storage/cache/cache_1_1_61_big b/storage/cache/cache_1_1_61_big new file mode 100644 index 0000000..b1e9766 Binary files /dev/null and b/storage/cache/cache_1_1_61_big differ diff --git a/storage/cache/cache_1_1_61_medium b/storage/cache/cache_1_1_61_medium new file mode 100644 index 0000000..f3e2ba7 Binary files /dev/null and b/storage/cache/cache_1_1_61_medium differ diff --git a/storage/cache/cache_1_1_61_orginal b/storage/cache/cache_1_1_61_orginal new file mode 100644 index 0000000..cffcbe8 Binary files /dev/null and b/storage/cache/cache_1_1_61_orginal differ diff --git a/storage/cache/cache_1_1_61_small b/storage/cache/cache_1_1_61_small new file mode 100644 index 0000000..0838475 Binary files /dev/null and b/storage/cache/cache_1_1_61_small differ diff --git a/storage/cache/cache_1_1_6_big b/storage/cache/cache_1_1_6_big new file mode 100644 index 0000000..04a62a5 Binary files /dev/null and b/storage/cache/cache_1_1_6_big differ diff --git a/storage/cache/cache_1_1_6_medium b/storage/cache/cache_1_1_6_medium new file mode 100644 index 0000000..e21c33d Binary files /dev/null and b/storage/cache/cache_1_1_6_medium differ diff --git a/storage/cache/cache_1_1_6_orginal b/storage/cache/cache_1_1_6_orginal new file mode 100644 index 0000000..bc3a7a4 Binary files /dev/null and b/storage/cache/cache_1_1_6_orginal differ diff --git a/storage/cache/cache_1_1_6_small b/storage/cache/cache_1_1_6_small new file mode 100644 index 0000000..34194f2 Binary files /dev/null and b/storage/cache/cache_1_1_6_small differ diff --git a/storage/cache/cache_1_1_7_big b/storage/cache/cache_1_1_7_big new file mode 100644 index 0000000..c56ec40 Binary files /dev/null and b/storage/cache/cache_1_1_7_big differ diff --git a/storage/cache/cache_1_1_7_medium b/storage/cache/cache_1_1_7_medium new file mode 100644 index 0000000..4e7e11a Binary files /dev/null and b/storage/cache/cache_1_1_7_medium differ diff --git a/storage/cache/cache_1_1_7_orginal b/storage/cache/cache_1_1_7_orginal new file mode 100644 index 0000000..2af544a Binary files /dev/null and b/storage/cache/cache_1_1_7_orginal differ diff --git a/storage/cache/cache_1_1_7_small b/storage/cache/cache_1_1_7_small new file mode 100644 index 0000000..f1cc506 Binary files /dev/null and b/storage/cache/cache_1_1_7_small differ diff --git a/storage/cache/cache_1_1_8_big b/storage/cache/cache_1_1_8_big new file mode 100644 index 0000000..bb26e15 Binary files /dev/null and b/storage/cache/cache_1_1_8_big differ diff --git a/storage/cache/cache_1_1_8_medium b/storage/cache/cache_1_1_8_medium new file mode 100644 index 0000000..b6a2157 Binary files /dev/null and b/storage/cache/cache_1_1_8_medium differ diff --git a/storage/cache/cache_1_1_8_orginal b/storage/cache/cache_1_1_8_orginal new file mode 100644 index 0000000..04cdbc7 Binary files /dev/null and b/storage/cache/cache_1_1_8_orginal differ diff --git a/storage/cache/cache_1_1_8_small b/storage/cache/cache_1_1_8_small new file mode 100644 index 0000000..4b71f57 Binary files /dev/null and b/storage/cache/cache_1_1_8_small differ diff --git a/storage/cache/cache_1_1_9_big b/storage/cache/cache_1_1_9_big new file mode 100644 index 0000000..5034df2 Binary files /dev/null and b/storage/cache/cache_1_1_9_big differ diff --git a/storage/cache/cache_1_1_9_medium b/storage/cache/cache_1_1_9_medium new file mode 100644 index 0000000..0981b8e Binary files /dev/null and b/storage/cache/cache_1_1_9_medium differ diff --git a/storage/cache/cache_1_1_9_orginal b/storage/cache/cache_1_1_9_orginal new file mode 100644 index 0000000..f7889be Binary files /dev/null and b/storage/cache/cache_1_1_9_orginal differ diff --git a/storage/cache/cache_1_1_9_small b/storage/cache/cache_1_1_9_small new file mode 100644 index 0000000..968cb8e Binary files /dev/null and b/storage/cache/cache_1_1_9_small differ diff --git a/storage/cache/cache_1_2_10_big b/storage/cache/cache_1_2_10_big new file mode 100644 index 0000000..404e051 Binary files /dev/null and b/storage/cache/cache_1_2_10_big differ diff --git a/storage/cache/cache_1_2_10_medium b/storage/cache/cache_1_2_10_medium new file mode 100644 index 0000000..b447684 Binary files /dev/null and b/storage/cache/cache_1_2_10_medium differ diff --git a/storage/cache/cache_1_2_10_orginal b/storage/cache/cache_1_2_10_orginal new file mode 100644 index 0000000..0fe0eb7 Binary files /dev/null and b/storage/cache/cache_1_2_10_orginal differ diff --git a/storage/cache/cache_1_2_10_small b/storage/cache/cache_1_2_10_small new file mode 100644 index 0000000..3de6919 Binary files /dev/null and b/storage/cache/cache_1_2_10_small differ diff --git a/storage/cache/cache_1_2_11_big b/storage/cache/cache_1_2_11_big new file mode 100644 index 0000000..5034df2 Binary files /dev/null and b/storage/cache/cache_1_2_11_big differ diff --git a/storage/cache/cache_1_2_11_medium b/storage/cache/cache_1_2_11_medium new file mode 100644 index 0000000..0981b8e Binary files /dev/null and b/storage/cache/cache_1_2_11_medium differ diff --git a/storage/cache/cache_1_2_11_orginal b/storage/cache/cache_1_2_11_orginal new file mode 100644 index 0000000..f7889be Binary files /dev/null and b/storage/cache/cache_1_2_11_orginal differ diff --git a/storage/cache/cache_1_2_11_small b/storage/cache/cache_1_2_11_small new file mode 100644 index 0000000..968cb8e Binary files /dev/null and b/storage/cache/cache_1_2_11_small differ diff --git a/storage/cache/cache_1_2_12_big b/storage/cache/cache_1_2_12_big new file mode 100644 index 0000000..32b248d Binary files /dev/null and b/storage/cache/cache_1_2_12_big differ diff --git a/storage/cache/cache_1_2_12_medium b/storage/cache/cache_1_2_12_medium new file mode 100644 index 0000000..71663a4 Binary files /dev/null and b/storage/cache/cache_1_2_12_medium differ diff --git a/storage/cache/cache_1_2_12_orginal b/storage/cache/cache_1_2_12_orginal new file mode 100644 index 0000000..2283715 Binary files /dev/null and b/storage/cache/cache_1_2_12_orginal differ diff --git a/storage/cache/cache_1_2_12_small b/storage/cache/cache_1_2_12_small new file mode 100644 index 0000000..01aac37 Binary files /dev/null and b/storage/cache/cache_1_2_12_small differ diff --git a/storage/cache/cache_1_2_13_big b/storage/cache/cache_1_2_13_big new file mode 100644 index 0000000..544f678 Binary files /dev/null and b/storage/cache/cache_1_2_13_big differ diff --git a/storage/cache/cache_1_2_13_medium b/storage/cache/cache_1_2_13_medium new file mode 100644 index 0000000..78811ca Binary files /dev/null and b/storage/cache/cache_1_2_13_medium differ diff --git a/storage/cache/cache_1_2_13_orginal b/storage/cache/cache_1_2_13_orginal new file mode 100644 index 0000000..6fb8e2d Binary files /dev/null and b/storage/cache/cache_1_2_13_orginal differ diff --git a/storage/cache/cache_1_2_13_small b/storage/cache/cache_1_2_13_small new file mode 100644 index 0000000..d42fdb5 Binary files /dev/null and b/storage/cache/cache_1_2_13_small differ diff --git a/storage/cache/cache_1_2_14_big b/storage/cache/cache_1_2_14_big new file mode 100644 index 0000000..a73fae6 Binary files /dev/null and b/storage/cache/cache_1_2_14_big differ diff --git a/storage/cache/cache_1_2_14_medium b/storage/cache/cache_1_2_14_medium new file mode 100644 index 0000000..0a55879 Binary files /dev/null and b/storage/cache/cache_1_2_14_medium differ diff --git a/storage/cache/cache_1_2_14_orginal b/storage/cache/cache_1_2_14_orginal new file mode 100644 index 0000000..6613277 Binary files /dev/null and b/storage/cache/cache_1_2_14_orginal differ diff --git a/storage/cache/cache_1_2_14_small b/storage/cache/cache_1_2_14_small new file mode 100644 index 0000000..7eb1778 Binary files /dev/null and b/storage/cache/cache_1_2_14_small differ diff --git a/storage/cache/cache_1_2_15_big b/storage/cache/cache_1_2_15_big new file mode 100644 index 0000000..ba0a29e Binary files /dev/null and b/storage/cache/cache_1_2_15_big differ diff --git a/storage/cache/cache_1_2_15_medium b/storage/cache/cache_1_2_15_medium new file mode 100644 index 0000000..d5771c7 Binary files /dev/null and b/storage/cache/cache_1_2_15_medium differ diff --git a/storage/cache/cache_1_2_15_orginal b/storage/cache/cache_1_2_15_orginal new file mode 100644 index 0000000..7756fd7 Binary files /dev/null and b/storage/cache/cache_1_2_15_orginal differ diff --git a/storage/cache/cache_1_2_15_small b/storage/cache/cache_1_2_15_small new file mode 100644 index 0000000..ab5dcaa Binary files /dev/null and b/storage/cache/cache_1_2_15_small differ diff --git a/storage/cache/cache_1_2_16_big b/storage/cache/cache_1_2_16_big new file mode 100644 index 0000000..bbd8691 Binary files /dev/null and b/storage/cache/cache_1_2_16_big differ diff --git a/storage/cache/cache_1_2_16_medium b/storage/cache/cache_1_2_16_medium new file mode 100644 index 0000000..ad76187 Binary files /dev/null and b/storage/cache/cache_1_2_16_medium differ diff --git a/storage/cache/cache_1_2_16_orginal b/storage/cache/cache_1_2_16_orginal new file mode 100644 index 0000000..18578af Binary files /dev/null and b/storage/cache/cache_1_2_16_orginal differ diff --git a/storage/cache/cache_1_2_16_small b/storage/cache/cache_1_2_16_small new file mode 100644 index 0000000..cb63aa3 Binary files /dev/null and b/storage/cache/cache_1_2_16_small differ diff --git a/storage/cache/cache_1_2_17_big b/storage/cache/cache_1_2_17_big new file mode 100644 index 0000000..a17ab03 Binary files /dev/null and b/storage/cache/cache_1_2_17_big differ diff --git a/storage/cache/cache_1_2_17_medium b/storage/cache/cache_1_2_17_medium new file mode 100644 index 0000000..255b6e5 Binary files /dev/null and b/storage/cache/cache_1_2_17_medium differ diff --git a/storage/cache/cache_1_2_17_orginal b/storage/cache/cache_1_2_17_orginal new file mode 100644 index 0000000..4d25036 Binary files /dev/null and b/storage/cache/cache_1_2_17_orginal differ diff --git a/storage/cache/cache_1_2_17_small b/storage/cache/cache_1_2_17_small new file mode 100644 index 0000000..52b6c98 Binary files /dev/null and b/storage/cache/cache_1_2_17_small differ diff --git a/storage/cache/cache_1_2_18_big b/storage/cache/cache_1_2_18_big new file mode 100644 index 0000000..81c67db Binary files /dev/null and b/storage/cache/cache_1_2_18_big differ diff --git a/storage/cache/cache_1_2_18_medium b/storage/cache/cache_1_2_18_medium new file mode 100644 index 0000000..b3e3863 Binary files /dev/null and b/storage/cache/cache_1_2_18_medium differ diff --git a/storage/cache/cache_1_2_18_orginal b/storage/cache/cache_1_2_18_orginal new file mode 100644 index 0000000..08acb25 Binary files /dev/null and b/storage/cache/cache_1_2_18_orginal differ diff --git a/storage/cache/cache_1_2_18_small b/storage/cache/cache_1_2_18_small new file mode 100644 index 0000000..832dbbe Binary files /dev/null and b/storage/cache/cache_1_2_18_small differ diff --git a/storage/cache/cache_1_2_19_big b/storage/cache/cache_1_2_19_big new file mode 100644 index 0000000..a0851eb Binary files /dev/null and b/storage/cache/cache_1_2_19_big differ diff --git a/storage/cache/cache_1_2_19_medium b/storage/cache/cache_1_2_19_medium new file mode 100644 index 0000000..bf881dd Binary files /dev/null and b/storage/cache/cache_1_2_19_medium differ diff --git a/storage/cache/cache_1_2_19_orginal b/storage/cache/cache_1_2_19_orginal new file mode 100644 index 0000000..916fa25 Binary files /dev/null and b/storage/cache/cache_1_2_19_orginal differ diff --git a/storage/cache/cache_1_2_19_small b/storage/cache/cache_1_2_19_small new file mode 100644 index 0000000..eedf6fe Binary files /dev/null and b/storage/cache/cache_1_2_19_small differ diff --git a/storage/cache/cache_1_2_20_big b/storage/cache/cache_1_2_20_big new file mode 100644 index 0000000..4b0e319 Binary files /dev/null and b/storage/cache/cache_1_2_20_big differ diff --git a/storage/cache/cache_1_2_20_medium b/storage/cache/cache_1_2_20_medium new file mode 100644 index 0000000..4800ae5 Binary files /dev/null and b/storage/cache/cache_1_2_20_medium differ diff --git a/storage/cache/cache_1_2_20_orginal b/storage/cache/cache_1_2_20_orginal new file mode 100644 index 0000000..f84036b Binary files /dev/null and b/storage/cache/cache_1_2_20_orginal differ diff --git a/storage/cache/cache_1_2_20_small b/storage/cache/cache_1_2_20_small new file mode 100644 index 0000000..2b49094 Binary files /dev/null and b/storage/cache/cache_1_2_20_small differ diff --git a/storage/cache/cache_1_2_21_big b/storage/cache/cache_1_2_21_big new file mode 100644 index 0000000..ebef07a Binary files /dev/null and b/storage/cache/cache_1_2_21_big differ diff --git a/storage/cache/cache_1_2_21_medium b/storage/cache/cache_1_2_21_medium new file mode 100644 index 0000000..5287a92 Binary files /dev/null and b/storage/cache/cache_1_2_21_medium differ diff --git a/storage/cache/cache_1_2_21_orginal b/storage/cache/cache_1_2_21_orginal new file mode 100644 index 0000000..5368e79 Binary files /dev/null and b/storage/cache/cache_1_2_21_orginal differ diff --git a/storage/cache/cache_1_2_21_small b/storage/cache/cache_1_2_21_small new file mode 100644 index 0000000..ec94e1e Binary files /dev/null and b/storage/cache/cache_1_2_21_small differ diff --git a/storage/cache/cache_1_2_22_big b/storage/cache/cache_1_2_22_big new file mode 100644 index 0000000..a7af1a4 Binary files /dev/null and b/storage/cache/cache_1_2_22_big differ diff --git a/storage/cache/cache_1_2_22_medium b/storage/cache/cache_1_2_22_medium new file mode 100644 index 0000000..59e2a3f Binary files /dev/null and b/storage/cache/cache_1_2_22_medium differ diff --git a/storage/cache/cache_1_2_22_orginal b/storage/cache/cache_1_2_22_orginal new file mode 100644 index 0000000..72c380d Binary files /dev/null and b/storage/cache/cache_1_2_22_orginal differ diff --git a/storage/cache/cache_1_2_22_small b/storage/cache/cache_1_2_22_small new file mode 100644 index 0000000..fa9abcc Binary files /dev/null and b/storage/cache/cache_1_2_22_small differ diff --git a/storage/cache/cache_1_2_23_big b/storage/cache/cache_1_2_23_big new file mode 100644 index 0000000..a1414b4 Binary files /dev/null and b/storage/cache/cache_1_2_23_big differ diff --git a/storage/cache/cache_1_2_23_medium b/storage/cache/cache_1_2_23_medium new file mode 100644 index 0000000..cc0d1e7 Binary files /dev/null and b/storage/cache/cache_1_2_23_medium differ diff --git a/storage/cache/cache_1_2_23_orginal b/storage/cache/cache_1_2_23_orginal new file mode 100644 index 0000000..37ff158 Binary files /dev/null and b/storage/cache/cache_1_2_23_orginal differ diff --git a/storage/cache/cache_1_2_23_small b/storage/cache/cache_1_2_23_small new file mode 100644 index 0000000..4baf103 Binary files /dev/null and b/storage/cache/cache_1_2_23_small differ diff --git a/storage/cache/cache_1_2_24_big b/storage/cache/cache_1_2_24_big new file mode 100644 index 0000000..abde941 Binary files /dev/null and b/storage/cache/cache_1_2_24_big differ diff --git a/storage/cache/cache_1_2_24_medium b/storage/cache/cache_1_2_24_medium new file mode 100644 index 0000000..3ace5cf Binary files /dev/null and b/storage/cache/cache_1_2_24_medium differ diff --git a/storage/cache/cache_1_2_24_orginal b/storage/cache/cache_1_2_24_orginal new file mode 100644 index 0000000..2f9a965 Binary files /dev/null and b/storage/cache/cache_1_2_24_orginal differ diff --git a/storage/cache/cache_1_2_24_small b/storage/cache/cache_1_2_24_small new file mode 100644 index 0000000..4c5255e Binary files /dev/null and b/storage/cache/cache_1_2_24_small differ diff --git a/storage/cache/cache_1_2_25_big b/storage/cache/cache_1_2_25_big new file mode 100644 index 0000000..3ea499a Binary files /dev/null and b/storage/cache/cache_1_2_25_big differ diff --git a/storage/cache/cache_1_2_25_medium b/storage/cache/cache_1_2_25_medium new file mode 100644 index 0000000..9a3f55e Binary files /dev/null and b/storage/cache/cache_1_2_25_medium differ diff --git a/storage/cache/cache_1_2_25_orginal b/storage/cache/cache_1_2_25_orginal new file mode 100644 index 0000000..5f143c9 Binary files /dev/null and b/storage/cache/cache_1_2_25_orginal differ diff --git a/storage/cache/cache_1_2_25_small b/storage/cache/cache_1_2_25_small new file mode 100644 index 0000000..cccf66c Binary files /dev/null and b/storage/cache/cache_1_2_25_small differ diff --git a/storage/cache/cache_1_2_26_big b/storage/cache/cache_1_2_26_big new file mode 100644 index 0000000..9042332 Binary files /dev/null and b/storage/cache/cache_1_2_26_big differ diff --git a/storage/cache/cache_1_2_26_medium b/storage/cache/cache_1_2_26_medium new file mode 100644 index 0000000..5b88485 Binary files /dev/null and b/storage/cache/cache_1_2_26_medium differ diff --git a/storage/cache/cache_1_2_26_orginal b/storage/cache/cache_1_2_26_orginal new file mode 100644 index 0000000..262a707 Binary files /dev/null and b/storage/cache/cache_1_2_26_orginal differ diff --git a/storage/cache/cache_1_2_26_small b/storage/cache/cache_1_2_26_small new file mode 100644 index 0000000..2375d12 Binary files /dev/null and b/storage/cache/cache_1_2_26_small differ diff --git a/storage/cache/cache_1_2_27_big b/storage/cache/cache_1_2_27_big new file mode 100644 index 0000000..6e03893 Binary files /dev/null and b/storage/cache/cache_1_2_27_big differ diff --git a/storage/cache/cache_1_2_27_medium b/storage/cache/cache_1_2_27_medium new file mode 100644 index 0000000..fc00771 Binary files /dev/null and b/storage/cache/cache_1_2_27_medium differ diff --git a/storage/cache/cache_1_2_27_orginal b/storage/cache/cache_1_2_27_orginal new file mode 100644 index 0000000..218989b Binary files /dev/null and b/storage/cache/cache_1_2_27_orginal differ diff --git a/storage/cache/cache_1_2_27_small b/storage/cache/cache_1_2_27_small new file mode 100644 index 0000000..e3ca9e2 Binary files /dev/null and b/storage/cache/cache_1_2_27_small differ diff --git a/storage/cache/cache_1_2_28_big b/storage/cache/cache_1_2_28_big new file mode 100644 index 0000000..ee2e353 Binary files /dev/null and b/storage/cache/cache_1_2_28_big differ diff --git a/storage/cache/cache_1_2_28_medium b/storage/cache/cache_1_2_28_medium new file mode 100644 index 0000000..73194d4 Binary files /dev/null and b/storage/cache/cache_1_2_28_medium differ diff --git a/storage/cache/cache_1_2_28_orginal b/storage/cache/cache_1_2_28_orginal new file mode 100644 index 0000000..39acb3b Binary files /dev/null and b/storage/cache/cache_1_2_28_orginal differ diff --git a/storage/cache/cache_1_2_28_small b/storage/cache/cache_1_2_28_small new file mode 100644 index 0000000..54b360f Binary files /dev/null and b/storage/cache/cache_1_2_28_small differ diff --git a/storage/cache/cache_1_2_29_big b/storage/cache/cache_1_2_29_big new file mode 100644 index 0000000..e1af127 Binary files /dev/null and b/storage/cache/cache_1_2_29_big differ diff --git a/storage/cache/cache_1_2_29_medium b/storage/cache/cache_1_2_29_medium new file mode 100644 index 0000000..24e822f Binary files /dev/null and b/storage/cache/cache_1_2_29_medium differ diff --git a/storage/cache/cache_1_2_29_orginal b/storage/cache/cache_1_2_29_orginal new file mode 100644 index 0000000..c189f2c Binary files /dev/null and b/storage/cache/cache_1_2_29_orginal differ diff --git a/storage/cache/cache_1_2_29_small b/storage/cache/cache_1_2_29_small new file mode 100644 index 0000000..6b6ff75 Binary files /dev/null and b/storage/cache/cache_1_2_29_small differ diff --git a/storage/cache/cache_1_2_2_big b/storage/cache/cache_1_2_2_big new file mode 100644 index 0000000..de804b3 Binary files /dev/null and b/storage/cache/cache_1_2_2_big differ diff --git a/storage/cache/cache_1_2_2_medium b/storage/cache/cache_1_2_2_medium new file mode 100644 index 0000000..44d1ff1 Binary files /dev/null and b/storage/cache/cache_1_2_2_medium differ diff --git a/storage/cache/cache_1_2_2_orginal b/storage/cache/cache_1_2_2_orginal new file mode 100644 index 0000000..ddaffbf Binary files /dev/null and b/storage/cache/cache_1_2_2_orginal differ diff --git a/storage/cache/cache_1_2_2_small b/storage/cache/cache_1_2_2_small new file mode 100644 index 0000000..64f7516 Binary files /dev/null and b/storage/cache/cache_1_2_2_small differ diff --git a/storage/cache/cache_1_2_30_big b/storage/cache/cache_1_2_30_big new file mode 100644 index 0000000..f0b1bcd Binary files /dev/null and b/storage/cache/cache_1_2_30_big differ diff --git a/storage/cache/cache_1_2_30_medium b/storage/cache/cache_1_2_30_medium new file mode 100644 index 0000000..3e33780 Binary files /dev/null and b/storage/cache/cache_1_2_30_medium differ diff --git a/storage/cache/cache_1_2_30_orginal b/storage/cache/cache_1_2_30_orginal new file mode 100644 index 0000000..3f13920 Binary files /dev/null and b/storage/cache/cache_1_2_30_orginal differ diff --git a/storage/cache/cache_1_2_30_small b/storage/cache/cache_1_2_30_small new file mode 100644 index 0000000..b6597fd Binary files /dev/null and b/storage/cache/cache_1_2_30_small differ diff --git a/storage/cache/cache_1_2_31_big b/storage/cache/cache_1_2_31_big new file mode 100644 index 0000000..fe8220a Binary files /dev/null and b/storage/cache/cache_1_2_31_big differ diff --git a/storage/cache/cache_1_2_31_medium b/storage/cache/cache_1_2_31_medium new file mode 100644 index 0000000..d4daf89 Binary files /dev/null and b/storage/cache/cache_1_2_31_medium differ diff --git a/storage/cache/cache_1_2_31_orginal b/storage/cache/cache_1_2_31_orginal new file mode 100644 index 0000000..92e0459 Binary files /dev/null and b/storage/cache/cache_1_2_31_orginal differ diff --git a/storage/cache/cache_1_2_31_small b/storage/cache/cache_1_2_31_small new file mode 100644 index 0000000..5e00b6f Binary files /dev/null and b/storage/cache/cache_1_2_31_small differ diff --git a/storage/cache/cache_1_2_32_big b/storage/cache/cache_1_2_32_big new file mode 100644 index 0000000..7e91fa9 Binary files /dev/null and b/storage/cache/cache_1_2_32_big differ diff --git a/storage/cache/cache_1_2_32_medium b/storage/cache/cache_1_2_32_medium new file mode 100644 index 0000000..1a532a4 Binary files /dev/null and b/storage/cache/cache_1_2_32_medium differ diff --git a/storage/cache/cache_1_2_32_orginal b/storage/cache/cache_1_2_32_orginal new file mode 100644 index 0000000..8036d05 Binary files /dev/null and b/storage/cache/cache_1_2_32_orginal differ diff --git a/storage/cache/cache_1_2_32_small b/storage/cache/cache_1_2_32_small new file mode 100644 index 0000000..0dd3f8b Binary files /dev/null and b/storage/cache/cache_1_2_32_small differ diff --git a/storage/cache/cache_1_2_33_big b/storage/cache/cache_1_2_33_big new file mode 100644 index 0000000..666849b Binary files /dev/null and b/storage/cache/cache_1_2_33_big differ diff --git a/storage/cache/cache_1_2_33_medium b/storage/cache/cache_1_2_33_medium new file mode 100644 index 0000000..70b2168 Binary files /dev/null and b/storage/cache/cache_1_2_33_medium differ diff --git a/storage/cache/cache_1_2_33_orginal b/storage/cache/cache_1_2_33_orginal new file mode 100644 index 0000000..33236da Binary files /dev/null and b/storage/cache/cache_1_2_33_orginal differ diff --git a/storage/cache/cache_1_2_33_small b/storage/cache/cache_1_2_33_small new file mode 100644 index 0000000..fab4467 Binary files /dev/null and b/storage/cache/cache_1_2_33_small differ diff --git a/storage/cache/cache_1_2_34_big b/storage/cache/cache_1_2_34_big new file mode 100644 index 0000000..7aa6451 Binary files /dev/null and b/storage/cache/cache_1_2_34_big differ diff --git a/storage/cache/cache_1_2_34_medium b/storage/cache/cache_1_2_34_medium new file mode 100644 index 0000000..24984c0 Binary files /dev/null and b/storage/cache/cache_1_2_34_medium differ diff --git a/storage/cache/cache_1_2_34_orginal b/storage/cache/cache_1_2_34_orginal new file mode 100644 index 0000000..c862d01 Binary files /dev/null and b/storage/cache/cache_1_2_34_orginal differ diff --git a/storage/cache/cache_1_2_34_small b/storage/cache/cache_1_2_34_small new file mode 100644 index 0000000..600c6b9 Binary files /dev/null and b/storage/cache/cache_1_2_34_small differ diff --git a/storage/cache/cache_1_2_35_big b/storage/cache/cache_1_2_35_big new file mode 100644 index 0000000..e3f53eb Binary files /dev/null and b/storage/cache/cache_1_2_35_big differ diff --git a/storage/cache/cache_1_2_35_medium b/storage/cache/cache_1_2_35_medium new file mode 100644 index 0000000..eeb001b Binary files /dev/null and b/storage/cache/cache_1_2_35_medium differ diff --git a/storage/cache/cache_1_2_35_orginal b/storage/cache/cache_1_2_35_orginal new file mode 100644 index 0000000..9c501f0 Binary files /dev/null and b/storage/cache/cache_1_2_35_orginal differ diff --git a/storage/cache/cache_1_2_35_small b/storage/cache/cache_1_2_35_small new file mode 100644 index 0000000..5170fb6 Binary files /dev/null and b/storage/cache/cache_1_2_35_small differ diff --git a/storage/cache/cache_1_2_36_big b/storage/cache/cache_1_2_36_big new file mode 100644 index 0000000..e0709ba Binary files /dev/null and b/storage/cache/cache_1_2_36_big differ diff --git a/storage/cache/cache_1_2_36_medium b/storage/cache/cache_1_2_36_medium new file mode 100644 index 0000000..d2dad59 Binary files /dev/null and b/storage/cache/cache_1_2_36_medium differ diff --git a/storage/cache/cache_1_2_36_orginal b/storage/cache/cache_1_2_36_orginal new file mode 100644 index 0000000..e9eab56 Binary files /dev/null and b/storage/cache/cache_1_2_36_orginal differ diff --git a/storage/cache/cache_1_2_36_small b/storage/cache/cache_1_2_36_small new file mode 100644 index 0000000..7fa8a17 Binary files /dev/null and b/storage/cache/cache_1_2_36_small differ diff --git a/storage/cache/cache_1_2_37_big b/storage/cache/cache_1_2_37_big new file mode 100644 index 0000000..3c3cde6 Binary files /dev/null and b/storage/cache/cache_1_2_37_big differ diff --git a/storage/cache/cache_1_2_37_medium b/storage/cache/cache_1_2_37_medium new file mode 100644 index 0000000..678f66b Binary files /dev/null and b/storage/cache/cache_1_2_37_medium differ diff --git a/storage/cache/cache_1_2_37_orginal b/storage/cache/cache_1_2_37_orginal new file mode 100644 index 0000000..6cc401b Binary files /dev/null and b/storage/cache/cache_1_2_37_orginal differ diff --git a/storage/cache/cache_1_2_37_small b/storage/cache/cache_1_2_37_small new file mode 100644 index 0000000..1c054c9 Binary files /dev/null and b/storage/cache/cache_1_2_37_small differ diff --git a/storage/cache/cache_1_2_38_big b/storage/cache/cache_1_2_38_big new file mode 100644 index 0000000..39ffdba Binary files /dev/null and b/storage/cache/cache_1_2_38_big differ diff --git a/storage/cache/cache_1_2_38_medium b/storage/cache/cache_1_2_38_medium new file mode 100644 index 0000000..c866187 Binary files /dev/null and b/storage/cache/cache_1_2_38_medium differ diff --git a/storage/cache/cache_1_2_38_orginal b/storage/cache/cache_1_2_38_orginal new file mode 100644 index 0000000..a97840a Binary files /dev/null and b/storage/cache/cache_1_2_38_orginal differ diff --git a/storage/cache/cache_1_2_38_small b/storage/cache/cache_1_2_38_small new file mode 100644 index 0000000..aac82a6 Binary files /dev/null and b/storage/cache/cache_1_2_38_small differ diff --git a/storage/cache/cache_1_2_39_big b/storage/cache/cache_1_2_39_big new file mode 100644 index 0000000..f088212 Binary files /dev/null and b/storage/cache/cache_1_2_39_big differ diff --git a/storage/cache/cache_1_2_39_medium b/storage/cache/cache_1_2_39_medium new file mode 100644 index 0000000..1faa420 Binary files /dev/null and b/storage/cache/cache_1_2_39_medium differ diff --git a/storage/cache/cache_1_2_39_orginal b/storage/cache/cache_1_2_39_orginal new file mode 100644 index 0000000..7735185 Binary files /dev/null and b/storage/cache/cache_1_2_39_orginal differ diff --git a/storage/cache/cache_1_2_39_small b/storage/cache/cache_1_2_39_small new file mode 100644 index 0000000..1169d4f Binary files /dev/null and b/storage/cache/cache_1_2_39_small differ diff --git a/storage/cache/cache_1_2_3_big b/storage/cache/cache_1_2_3_big new file mode 100644 index 0000000..30aafa0 Binary files /dev/null and b/storage/cache/cache_1_2_3_big differ diff --git a/storage/cache/cache_1_2_3_medium b/storage/cache/cache_1_2_3_medium new file mode 100644 index 0000000..86ae125 Binary files /dev/null and b/storage/cache/cache_1_2_3_medium differ diff --git a/storage/cache/cache_1_2_3_orginal b/storage/cache/cache_1_2_3_orginal new file mode 100644 index 0000000..fb0b574 Binary files /dev/null and b/storage/cache/cache_1_2_3_orginal differ diff --git a/storage/cache/cache_1_2_3_small b/storage/cache/cache_1_2_3_small new file mode 100644 index 0000000..be3d548 Binary files /dev/null and b/storage/cache/cache_1_2_3_small differ diff --git a/storage/cache/cache_1_2_40_big b/storage/cache/cache_1_2_40_big new file mode 100644 index 0000000..e286d50 Binary files /dev/null and b/storage/cache/cache_1_2_40_big differ diff --git a/storage/cache/cache_1_2_40_medium b/storage/cache/cache_1_2_40_medium new file mode 100644 index 0000000..865ec81 Binary files /dev/null and b/storage/cache/cache_1_2_40_medium differ diff --git a/storage/cache/cache_1_2_40_orginal b/storage/cache/cache_1_2_40_orginal new file mode 100644 index 0000000..660bb41 Binary files /dev/null and b/storage/cache/cache_1_2_40_orginal differ diff --git a/storage/cache/cache_1_2_40_small b/storage/cache/cache_1_2_40_small new file mode 100644 index 0000000..45bc4ea Binary files /dev/null and b/storage/cache/cache_1_2_40_small differ diff --git a/storage/cache/cache_1_2_41_big b/storage/cache/cache_1_2_41_big new file mode 100644 index 0000000..9c4080f Binary files /dev/null and b/storage/cache/cache_1_2_41_big differ diff --git a/storage/cache/cache_1_2_41_medium b/storage/cache/cache_1_2_41_medium new file mode 100644 index 0000000..d2accda Binary files /dev/null and b/storage/cache/cache_1_2_41_medium differ diff --git a/storage/cache/cache_1_2_41_orginal b/storage/cache/cache_1_2_41_orginal new file mode 100644 index 0000000..fd5929c Binary files /dev/null and b/storage/cache/cache_1_2_41_orginal differ diff --git a/storage/cache/cache_1_2_41_small b/storage/cache/cache_1_2_41_small new file mode 100644 index 0000000..452c7a3 Binary files /dev/null and b/storage/cache/cache_1_2_41_small differ diff --git a/storage/cache/cache_1_2_42_big b/storage/cache/cache_1_2_42_big new file mode 100644 index 0000000..11a3351 Binary files /dev/null and b/storage/cache/cache_1_2_42_big differ diff --git a/storage/cache/cache_1_2_42_medium b/storage/cache/cache_1_2_42_medium new file mode 100644 index 0000000..bc440ad Binary files /dev/null and b/storage/cache/cache_1_2_42_medium differ diff --git a/storage/cache/cache_1_2_42_orginal b/storage/cache/cache_1_2_42_orginal new file mode 100644 index 0000000..d98ea2d Binary files /dev/null and b/storage/cache/cache_1_2_42_orginal differ diff --git a/storage/cache/cache_1_2_42_small b/storage/cache/cache_1_2_42_small new file mode 100644 index 0000000..63ee37f Binary files /dev/null and b/storage/cache/cache_1_2_42_small differ diff --git a/storage/cache/cache_1_2_43_big b/storage/cache/cache_1_2_43_big new file mode 100644 index 0000000..44b233c Binary files /dev/null and b/storage/cache/cache_1_2_43_big differ diff --git a/storage/cache/cache_1_2_43_medium b/storage/cache/cache_1_2_43_medium new file mode 100644 index 0000000..d52bb2e Binary files /dev/null and b/storage/cache/cache_1_2_43_medium differ diff --git a/storage/cache/cache_1_2_43_orginal b/storage/cache/cache_1_2_43_orginal new file mode 100644 index 0000000..8ccc927 Binary files /dev/null and b/storage/cache/cache_1_2_43_orginal differ diff --git a/storage/cache/cache_1_2_43_small b/storage/cache/cache_1_2_43_small new file mode 100644 index 0000000..ca22fd0 Binary files /dev/null and b/storage/cache/cache_1_2_43_small differ diff --git a/storage/cache/cache_1_2_44_big b/storage/cache/cache_1_2_44_big new file mode 100644 index 0000000..bcc2934 Binary files /dev/null and b/storage/cache/cache_1_2_44_big differ diff --git a/storage/cache/cache_1_2_44_medium b/storage/cache/cache_1_2_44_medium new file mode 100644 index 0000000..01f4f37 Binary files /dev/null and b/storage/cache/cache_1_2_44_medium differ diff --git a/storage/cache/cache_1_2_44_orginal b/storage/cache/cache_1_2_44_orginal new file mode 100644 index 0000000..8579e14 Binary files /dev/null and b/storage/cache/cache_1_2_44_orginal differ diff --git a/storage/cache/cache_1_2_44_small b/storage/cache/cache_1_2_44_small new file mode 100644 index 0000000..2342f2a Binary files /dev/null and b/storage/cache/cache_1_2_44_small differ diff --git a/storage/cache/cache_1_2_45_big b/storage/cache/cache_1_2_45_big new file mode 100644 index 0000000..97e635f Binary files /dev/null and b/storage/cache/cache_1_2_45_big differ diff --git a/storage/cache/cache_1_2_45_medium b/storage/cache/cache_1_2_45_medium new file mode 100644 index 0000000..4fcfb09 Binary files /dev/null and b/storage/cache/cache_1_2_45_medium differ diff --git a/storage/cache/cache_1_2_45_orginal b/storage/cache/cache_1_2_45_orginal new file mode 100644 index 0000000..498c359 Binary files /dev/null and b/storage/cache/cache_1_2_45_orginal differ diff --git a/storage/cache/cache_1_2_45_small b/storage/cache/cache_1_2_45_small new file mode 100644 index 0000000..4c3ec8b Binary files /dev/null and b/storage/cache/cache_1_2_45_small differ diff --git a/storage/cache/cache_1_2_46_big b/storage/cache/cache_1_2_46_big new file mode 100644 index 0000000..7707dd9 Binary files /dev/null and b/storage/cache/cache_1_2_46_big differ diff --git a/storage/cache/cache_1_2_46_medium b/storage/cache/cache_1_2_46_medium new file mode 100644 index 0000000..65a9518 Binary files /dev/null and b/storage/cache/cache_1_2_46_medium differ diff --git a/storage/cache/cache_1_2_46_orginal b/storage/cache/cache_1_2_46_orginal new file mode 100644 index 0000000..212ea08 Binary files /dev/null and b/storage/cache/cache_1_2_46_orginal differ diff --git a/storage/cache/cache_1_2_46_small b/storage/cache/cache_1_2_46_small new file mode 100644 index 0000000..d5d5dae Binary files /dev/null and b/storage/cache/cache_1_2_46_small differ diff --git a/storage/cache/cache_1_2_47_big b/storage/cache/cache_1_2_47_big new file mode 100644 index 0000000..fb1086f Binary files /dev/null and b/storage/cache/cache_1_2_47_big differ diff --git a/storage/cache/cache_1_2_47_medium b/storage/cache/cache_1_2_47_medium new file mode 100644 index 0000000..0e2168b Binary files /dev/null and b/storage/cache/cache_1_2_47_medium differ diff --git a/storage/cache/cache_1_2_47_orginal b/storage/cache/cache_1_2_47_orginal new file mode 100644 index 0000000..9e91f84 Binary files /dev/null and b/storage/cache/cache_1_2_47_orginal differ diff --git a/storage/cache/cache_1_2_47_small b/storage/cache/cache_1_2_47_small new file mode 100644 index 0000000..41176c9 Binary files /dev/null and b/storage/cache/cache_1_2_47_small differ diff --git a/storage/cache/cache_1_2_48_big b/storage/cache/cache_1_2_48_big new file mode 100644 index 0000000..f21daac Binary files /dev/null and b/storage/cache/cache_1_2_48_big differ diff --git a/storage/cache/cache_1_2_48_medium b/storage/cache/cache_1_2_48_medium new file mode 100644 index 0000000..2dc967e Binary files /dev/null and b/storage/cache/cache_1_2_48_medium differ diff --git a/storage/cache/cache_1_2_48_orginal b/storage/cache/cache_1_2_48_orginal new file mode 100644 index 0000000..d198b90 Binary files /dev/null and b/storage/cache/cache_1_2_48_orginal differ diff --git a/storage/cache/cache_1_2_48_small b/storage/cache/cache_1_2_48_small new file mode 100644 index 0000000..438d076 Binary files /dev/null and b/storage/cache/cache_1_2_48_small differ diff --git a/storage/cache/cache_1_2_49_big b/storage/cache/cache_1_2_49_big new file mode 100644 index 0000000..e74f9cd Binary files /dev/null and b/storage/cache/cache_1_2_49_big differ diff --git a/storage/cache/cache_1_2_49_medium b/storage/cache/cache_1_2_49_medium new file mode 100644 index 0000000..94ef449 Binary files /dev/null and b/storage/cache/cache_1_2_49_medium differ diff --git a/storage/cache/cache_1_2_49_orginal b/storage/cache/cache_1_2_49_orginal new file mode 100644 index 0000000..2609337 Binary files /dev/null and b/storage/cache/cache_1_2_49_orginal differ diff --git a/storage/cache/cache_1_2_49_small b/storage/cache/cache_1_2_49_small new file mode 100644 index 0000000..8f466e4 Binary files /dev/null and b/storage/cache/cache_1_2_49_small differ diff --git a/storage/cache/cache_1_2_4_big b/storage/cache/cache_1_2_4_big new file mode 100644 index 0000000..f4ff29f Binary files /dev/null and b/storage/cache/cache_1_2_4_big differ diff --git a/storage/cache/cache_1_2_4_medium b/storage/cache/cache_1_2_4_medium new file mode 100644 index 0000000..5486ea8 Binary files /dev/null and b/storage/cache/cache_1_2_4_medium differ diff --git a/storage/cache/cache_1_2_4_orginal b/storage/cache/cache_1_2_4_orginal new file mode 100644 index 0000000..ba35a72 Binary files /dev/null and b/storage/cache/cache_1_2_4_orginal differ diff --git a/storage/cache/cache_1_2_4_small b/storage/cache/cache_1_2_4_small new file mode 100644 index 0000000..c9355f7 Binary files /dev/null and b/storage/cache/cache_1_2_4_small differ diff --git a/storage/cache/cache_1_2_50_big b/storage/cache/cache_1_2_50_big new file mode 100644 index 0000000..1c43509 Binary files /dev/null and b/storage/cache/cache_1_2_50_big differ diff --git a/storage/cache/cache_1_2_50_medium b/storage/cache/cache_1_2_50_medium new file mode 100644 index 0000000..0b45372 Binary files /dev/null and b/storage/cache/cache_1_2_50_medium differ diff --git a/storage/cache/cache_1_2_50_orginal b/storage/cache/cache_1_2_50_orginal new file mode 100644 index 0000000..5c047da Binary files /dev/null and b/storage/cache/cache_1_2_50_orginal differ diff --git a/storage/cache/cache_1_2_50_small b/storage/cache/cache_1_2_50_small new file mode 100644 index 0000000..175f4a1 Binary files /dev/null and b/storage/cache/cache_1_2_50_small differ diff --git a/storage/cache/cache_1_2_51_big b/storage/cache/cache_1_2_51_big new file mode 100644 index 0000000..5aac27c Binary files /dev/null and b/storage/cache/cache_1_2_51_big differ diff --git a/storage/cache/cache_1_2_51_medium b/storage/cache/cache_1_2_51_medium new file mode 100644 index 0000000..fc9493f Binary files /dev/null and b/storage/cache/cache_1_2_51_medium differ diff --git a/storage/cache/cache_1_2_51_orginal b/storage/cache/cache_1_2_51_orginal new file mode 100644 index 0000000..4c37c60 Binary files /dev/null and b/storage/cache/cache_1_2_51_orginal differ diff --git a/storage/cache/cache_1_2_51_small b/storage/cache/cache_1_2_51_small new file mode 100644 index 0000000..eb011b1 Binary files /dev/null and b/storage/cache/cache_1_2_51_small differ diff --git a/storage/cache/cache_1_2_52_big b/storage/cache/cache_1_2_52_big new file mode 100644 index 0000000..7b38d44 Binary files /dev/null and b/storage/cache/cache_1_2_52_big differ diff --git a/storage/cache/cache_1_2_52_medium b/storage/cache/cache_1_2_52_medium new file mode 100644 index 0000000..36ec9df Binary files /dev/null and b/storage/cache/cache_1_2_52_medium differ diff --git a/storage/cache/cache_1_2_52_orginal b/storage/cache/cache_1_2_52_orginal new file mode 100644 index 0000000..5847d0e Binary files /dev/null and b/storage/cache/cache_1_2_52_orginal differ diff --git a/storage/cache/cache_1_2_52_small b/storage/cache/cache_1_2_52_small new file mode 100644 index 0000000..54fbe15 Binary files /dev/null and b/storage/cache/cache_1_2_52_small differ diff --git a/storage/cache/cache_1_2_53_big b/storage/cache/cache_1_2_53_big new file mode 100644 index 0000000..c060722 Binary files /dev/null and b/storage/cache/cache_1_2_53_big differ diff --git a/storage/cache/cache_1_2_53_medium b/storage/cache/cache_1_2_53_medium new file mode 100644 index 0000000..21a49d7 Binary files /dev/null and b/storage/cache/cache_1_2_53_medium differ diff --git a/storage/cache/cache_1_2_53_orginal b/storage/cache/cache_1_2_53_orginal new file mode 100644 index 0000000..50d8f66 Binary files /dev/null and b/storage/cache/cache_1_2_53_orginal differ diff --git a/storage/cache/cache_1_2_53_small b/storage/cache/cache_1_2_53_small new file mode 100644 index 0000000..d5f6197 Binary files /dev/null and b/storage/cache/cache_1_2_53_small differ diff --git a/storage/cache/cache_1_2_54_big b/storage/cache/cache_1_2_54_big new file mode 100644 index 0000000..dca698f Binary files /dev/null and b/storage/cache/cache_1_2_54_big differ diff --git a/storage/cache/cache_1_2_54_medium b/storage/cache/cache_1_2_54_medium new file mode 100644 index 0000000..413d1d4 Binary files /dev/null and b/storage/cache/cache_1_2_54_medium differ diff --git a/storage/cache/cache_1_2_54_orginal b/storage/cache/cache_1_2_54_orginal new file mode 100644 index 0000000..d265008 Binary files /dev/null and b/storage/cache/cache_1_2_54_orginal differ diff --git a/storage/cache/cache_1_2_54_small b/storage/cache/cache_1_2_54_small new file mode 100644 index 0000000..4be220e Binary files /dev/null and b/storage/cache/cache_1_2_54_small differ diff --git a/storage/cache/cache_1_2_55_big b/storage/cache/cache_1_2_55_big new file mode 100644 index 0000000..1984943 Binary files /dev/null and b/storage/cache/cache_1_2_55_big differ diff --git a/storage/cache/cache_1_2_55_medium b/storage/cache/cache_1_2_55_medium new file mode 100644 index 0000000..9fa7453 Binary files /dev/null and b/storage/cache/cache_1_2_55_medium differ diff --git a/storage/cache/cache_1_2_55_orginal b/storage/cache/cache_1_2_55_orginal new file mode 100644 index 0000000..6068d67 Binary files /dev/null and b/storage/cache/cache_1_2_55_orginal differ diff --git a/storage/cache/cache_1_2_55_small b/storage/cache/cache_1_2_55_small new file mode 100644 index 0000000..11fd5ba Binary files /dev/null and b/storage/cache/cache_1_2_55_small differ diff --git a/storage/cache/cache_1_2_56_big b/storage/cache/cache_1_2_56_big new file mode 100644 index 0000000..538281b Binary files /dev/null and b/storage/cache/cache_1_2_56_big differ diff --git a/storage/cache/cache_1_2_56_medium b/storage/cache/cache_1_2_56_medium new file mode 100644 index 0000000..c4b1db8 Binary files /dev/null and b/storage/cache/cache_1_2_56_medium differ diff --git a/storage/cache/cache_1_2_56_orginal b/storage/cache/cache_1_2_56_orginal new file mode 100644 index 0000000..c24c2b5 Binary files /dev/null and b/storage/cache/cache_1_2_56_orginal differ diff --git a/storage/cache/cache_1_2_56_small b/storage/cache/cache_1_2_56_small new file mode 100644 index 0000000..f8b90a3 Binary files /dev/null and b/storage/cache/cache_1_2_56_small differ diff --git a/storage/cache/cache_1_2_57_big b/storage/cache/cache_1_2_57_big new file mode 100644 index 0000000..35f6c9b Binary files /dev/null and b/storage/cache/cache_1_2_57_big differ diff --git a/storage/cache/cache_1_2_57_medium b/storage/cache/cache_1_2_57_medium new file mode 100644 index 0000000..f85ce7a Binary files /dev/null and b/storage/cache/cache_1_2_57_medium differ diff --git a/storage/cache/cache_1_2_57_orginal b/storage/cache/cache_1_2_57_orginal new file mode 100644 index 0000000..1c621dc Binary files /dev/null and b/storage/cache/cache_1_2_57_orginal differ diff --git a/storage/cache/cache_1_2_57_small b/storage/cache/cache_1_2_57_small new file mode 100644 index 0000000..2fc59ec Binary files /dev/null and b/storage/cache/cache_1_2_57_small differ diff --git a/storage/cache/cache_1_2_58_big b/storage/cache/cache_1_2_58_big new file mode 100644 index 0000000..534f93a Binary files /dev/null and b/storage/cache/cache_1_2_58_big differ diff --git a/storage/cache/cache_1_2_58_medium b/storage/cache/cache_1_2_58_medium new file mode 100644 index 0000000..c5fcc62 Binary files /dev/null and b/storage/cache/cache_1_2_58_medium differ diff --git a/storage/cache/cache_1_2_58_orginal b/storage/cache/cache_1_2_58_orginal new file mode 100644 index 0000000..7c6fdd3 Binary files /dev/null and b/storage/cache/cache_1_2_58_orginal differ diff --git a/storage/cache/cache_1_2_58_small b/storage/cache/cache_1_2_58_small new file mode 100644 index 0000000..d3eb95e Binary files /dev/null and b/storage/cache/cache_1_2_58_small differ diff --git a/storage/cache/cache_1_2_59_big b/storage/cache/cache_1_2_59_big new file mode 100644 index 0000000..38896a8 Binary files /dev/null and b/storage/cache/cache_1_2_59_big differ diff --git a/storage/cache/cache_1_2_59_medium b/storage/cache/cache_1_2_59_medium new file mode 100644 index 0000000..c4f4062 Binary files /dev/null and b/storage/cache/cache_1_2_59_medium differ diff --git a/storage/cache/cache_1_2_59_orginal b/storage/cache/cache_1_2_59_orginal new file mode 100644 index 0000000..1152299 Binary files /dev/null and b/storage/cache/cache_1_2_59_orginal differ diff --git a/storage/cache/cache_1_2_59_small b/storage/cache/cache_1_2_59_small new file mode 100644 index 0000000..0da80cd Binary files /dev/null and b/storage/cache/cache_1_2_59_small differ diff --git a/storage/cache/cache_1_2_5_big b/storage/cache/cache_1_2_5_big new file mode 100644 index 0000000..3acefec Binary files /dev/null and b/storage/cache/cache_1_2_5_big differ diff --git a/storage/cache/cache_1_2_5_medium b/storage/cache/cache_1_2_5_medium new file mode 100644 index 0000000..c45535b Binary files /dev/null and b/storage/cache/cache_1_2_5_medium differ diff --git a/storage/cache/cache_1_2_5_orginal b/storage/cache/cache_1_2_5_orginal new file mode 100644 index 0000000..40047c1 Binary files /dev/null and b/storage/cache/cache_1_2_5_orginal differ diff --git a/storage/cache/cache_1_2_5_small b/storage/cache/cache_1_2_5_small new file mode 100644 index 0000000..b322b23 Binary files /dev/null and b/storage/cache/cache_1_2_5_small differ diff --git a/storage/cache/cache_1_2_60_big b/storage/cache/cache_1_2_60_big new file mode 100644 index 0000000..287e63e Binary files /dev/null and b/storage/cache/cache_1_2_60_big differ diff --git a/storage/cache/cache_1_2_60_medium b/storage/cache/cache_1_2_60_medium new file mode 100644 index 0000000..92608c6 Binary files /dev/null and b/storage/cache/cache_1_2_60_medium differ diff --git a/storage/cache/cache_1_2_60_orginal b/storage/cache/cache_1_2_60_orginal new file mode 100644 index 0000000..9a8a2ac Binary files /dev/null and b/storage/cache/cache_1_2_60_orginal differ diff --git a/storage/cache/cache_1_2_60_small b/storage/cache/cache_1_2_60_small new file mode 100644 index 0000000..6ebd986 Binary files /dev/null and b/storage/cache/cache_1_2_60_small differ diff --git a/storage/cache/cache_1_2_61_big b/storage/cache/cache_1_2_61_big new file mode 100644 index 0000000..ea46d98 Binary files /dev/null and b/storage/cache/cache_1_2_61_big differ diff --git a/storage/cache/cache_1_2_61_medium b/storage/cache/cache_1_2_61_medium new file mode 100644 index 0000000..5e69467 Binary files /dev/null and b/storage/cache/cache_1_2_61_medium differ diff --git a/storage/cache/cache_1_2_61_orginal b/storage/cache/cache_1_2_61_orginal new file mode 100644 index 0000000..a647aa9 Binary files /dev/null and b/storage/cache/cache_1_2_61_orginal differ diff --git a/storage/cache/cache_1_2_61_small b/storage/cache/cache_1_2_61_small new file mode 100644 index 0000000..a14379c Binary files /dev/null and b/storage/cache/cache_1_2_61_small differ diff --git a/storage/cache/cache_1_2_62_big b/storage/cache/cache_1_2_62_big new file mode 100644 index 0000000..b1e9766 Binary files /dev/null and b/storage/cache/cache_1_2_62_big differ diff --git a/storage/cache/cache_1_2_62_medium b/storage/cache/cache_1_2_62_medium new file mode 100644 index 0000000..f3e2ba7 Binary files /dev/null and b/storage/cache/cache_1_2_62_medium differ diff --git a/storage/cache/cache_1_2_62_orginal b/storage/cache/cache_1_2_62_orginal new file mode 100644 index 0000000..cffcbe8 Binary files /dev/null and b/storage/cache/cache_1_2_62_orginal differ diff --git a/storage/cache/cache_1_2_62_small b/storage/cache/cache_1_2_62_small new file mode 100644 index 0000000..0838475 Binary files /dev/null and b/storage/cache/cache_1_2_62_small differ diff --git a/storage/cache/cache_1_2_63_big b/storage/cache/cache_1_2_63_big new file mode 100644 index 0000000..ba0a29e Binary files /dev/null and b/storage/cache/cache_1_2_63_big differ diff --git a/storage/cache/cache_1_2_63_medium b/storage/cache/cache_1_2_63_medium new file mode 100644 index 0000000..d5771c7 Binary files /dev/null and b/storage/cache/cache_1_2_63_medium differ diff --git a/storage/cache/cache_1_2_63_orginal b/storage/cache/cache_1_2_63_orginal new file mode 100644 index 0000000..7756fd7 Binary files /dev/null and b/storage/cache/cache_1_2_63_orginal differ diff --git a/storage/cache/cache_1_2_63_small b/storage/cache/cache_1_2_63_small new file mode 100644 index 0000000..ab5dcaa Binary files /dev/null and b/storage/cache/cache_1_2_63_small differ diff --git a/storage/cache/cache_1_2_64_big b/storage/cache/cache_1_2_64_big new file mode 100644 index 0000000..404e051 Binary files /dev/null and b/storage/cache/cache_1_2_64_big differ diff --git a/storage/cache/cache_1_2_64_medium b/storage/cache/cache_1_2_64_medium new file mode 100644 index 0000000..b447684 Binary files /dev/null and b/storage/cache/cache_1_2_64_medium differ diff --git a/storage/cache/cache_1_2_64_orginal b/storage/cache/cache_1_2_64_orginal new file mode 100644 index 0000000..0fe0eb7 Binary files /dev/null and b/storage/cache/cache_1_2_64_orginal differ diff --git a/storage/cache/cache_1_2_64_small b/storage/cache/cache_1_2_64_small new file mode 100644 index 0000000..3de6919 Binary files /dev/null and b/storage/cache/cache_1_2_64_small differ diff --git a/storage/cache/cache_1_2_6_big b/storage/cache/cache_1_2_6_big new file mode 100644 index 0000000..94415bd Binary files /dev/null and b/storage/cache/cache_1_2_6_big differ diff --git a/storage/cache/cache_1_2_6_medium b/storage/cache/cache_1_2_6_medium new file mode 100644 index 0000000..e284970 Binary files /dev/null and b/storage/cache/cache_1_2_6_medium differ diff --git a/storage/cache/cache_1_2_6_orginal b/storage/cache/cache_1_2_6_orginal new file mode 100644 index 0000000..5b5edc0 Binary files /dev/null and b/storage/cache/cache_1_2_6_orginal differ diff --git a/storage/cache/cache_1_2_6_small b/storage/cache/cache_1_2_6_small new file mode 100644 index 0000000..de613f9 Binary files /dev/null and b/storage/cache/cache_1_2_6_small differ diff --git a/storage/cache/cache_1_2_7_big b/storage/cache/cache_1_2_7_big new file mode 100644 index 0000000..04a62a5 Binary files /dev/null and b/storage/cache/cache_1_2_7_big differ diff --git a/storage/cache/cache_1_2_7_medium b/storage/cache/cache_1_2_7_medium new file mode 100644 index 0000000..e21c33d Binary files /dev/null and b/storage/cache/cache_1_2_7_medium differ diff --git a/storage/cache/cache_1_2_7_orginal b/storage/cache/cache_1_2_7_orginal new file mode 100644 index 0000000..bc3a7a4 Binary files /dev/null and b/storage/cache/cache_1_2_7_orginal differ diff --git a/storage/cache/cache_1_2_7_small b/storage/cache/cache_1_2_7_small new file mode 100644 index 0000000..34194f2 Binary files /dev/null and b/storage/cache/cache_1_2_7_small differ diff --git a/storage/cache/cache_1_2_8_big b/storage/cache/cache_1_2_8_big new file mode 100644 index 0000000..c56ec40 Binary files /dev/null and b/storage/cache/cache_1_2_8_big differ diff --git a/storage/cache/cache_1_2_8_medium b/storage/cache/cache_1_2_8_medium new file mode 100644 index 0000000..4e7e11a Binary files /dev/null and b/storage/cache/cache_1_2_8_medium differ diff --git a/storage/cache/cache_1_2_8_orginal b/storage/cache/cache_1_2_8_orginal new file mode 100644 index 0000000..2af544a Binary files /dev/null and b/storage/cache/cache_1_2_8_orginal differ diff --git a/storage/cache/cache_1_2_8_small b/storage/cache/cache_1_2_8_small new file mode 100644 index 0000000..f1cc506 Binary files /dev/null and b/storage/cache/cache_1_2_8_small differ diff --git a/storage/cache/cache_1_2_9_big b/storage/cache/cache_1_2_9_big new file mode 100644 index 0000000..bb26e15 Binary files /dev/null and b/storage/cache/cache_1_2_9_big differ diff --git a/storage/cache/cache_1_2_9_medium b/storage/cache/cache_1_2_9_medium new file mode 100644 index 0000000..b6a2157 Binary files /dev/null and b/storage/cache/cache_1_2_9_medium differ diff --git a/storage/cache/cache_1_2_9_orginal b/storage/cache/cache_1_2_9_orginal new file mode 100644 index 0000000..04cdbc7 Binary files /dev/null and b/storage/cache/cache_1_2_9_orginal differ diff --git a/storage/cache/cache_1_2_9_small b/storage/cache/cache_1_2_9_small new file mode 100644 index 0000000..4b71f57 Binary files /dev/null and b/storage/cache/cache_1_2_9_small differ