commit 043116fbc9687241a22ee4ba2dde7b74f58a9ff4 Author: ninavirgiana Date: Thu Mar 12 21:10:27 2026 +0700 Initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a186cd2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[compose.yaml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c0660ea --- /dev/null +++ b/.env.example @@ -0,0 +1,65 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +# APP_MAINTENANCE_STORE=database + +# PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +# CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b71b1ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +*.log +.DS_Store +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +/.fleet +/.idea +/.nova +/.phpunit.cache +/.vscode +/.zed +/auth.json +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +Homestead.json +Homestead.yaml +Thumbs.db diff --git a/README.md b/README.md new file mode 100644 index 0000000..0165a77 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +

Laravel Logo

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. You can also check out [Laravel Learn](https://laravel.com/learn), where you will be guided through building a modern Laravel application. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com). + +### Premium Partners + +- **[Vehikl](https://vehikl.com)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Redberry](https://redberry.international/laravel-development)** +- **[Active Logic](https://activelogic.com)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php new file mode 100644 index 0000000..4a8762d --- /dev/null +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -0,0 +1,47 @@ +authenticate(); + + $request->session()->regenerate(); + + return redirect()->intended(route('beranda', absolute: false)); + } + + /** + * Destroy an authenticated session. + */ + public function destroy(Request $request): RedirectResponse + { + Auth::guard('web')->logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/Auth/ConfirmablePasswordController.php b/app/Http/Controllers/Auth/ConfirmablePasswordController.php new file mode 100644 index 0000000..712394a --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmablePasswordController.php @@ -0,0 +1,40 @@ +validate([ + 'email' => $request->user()->email, + 'password' => $request->password, + ])) { + throw ValidationException::withMessages([ + 'password' => __('auth.password'), + ]); + } + + $request->session()->put('auth.password_confirmed_at', time()); + + return redirect()->intended(route('dashboard', absolute: false)); + } +} diff --git a/app/Http/Controllers/Auth/EmailVerificationNotificationController.php b/app/Http/Controllers/Auth/EmailVerificationNotificationController.php new file mode 100644 index 0000000..f64fa9b --- /dev/null +++ b/app/Http/Controllers/Auth/EmailVerificationNotificationController.php @@ -0,0 +1,24 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(route('dashboard', absolute: false)); + } + + $request->user()->sendEmailVerificationNotification(); + + return back()->with('status', 'verification-link-sent'); + } +} diff --git a/app/Http/Controllers/Auth/EmailVerificationPromptController.php b/app/Http/Controllers/Auth/EmailVerificationPromptController.php new file mode 100644 index 0000000..ee3cb6f --- /dev/null +++ b/app/Http/Controllers/Auth/EmailVerificationPromptController.php @@ -0,0 +1,21 @@ +user()->hasVerifiedEmail() + ? redirect()->intended(route('dashboard', absolute: false)) + : view('auth.verify-email'); + } +} diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php new file mode 100644 index 0000000..d864a9a --- /dev/null +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -0,0 +1,64 @@ + $request]); + } + + /** + * Handle an incoming new password request. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function store(Request $request): RedirectResponse + { + $request->validate([ + 'token' => ['required'], + 'email' => ['required', 'email'], + 'password' => ['required', 'confirmed', 'min:6', 'max:20'], + ], [ + 'email.required' => 'Email wajib diisi.', + 'email.email' => 'Format email tidak valid.', + + 'password.required' => 'Kata sandi wajib diisi.', + 'password.confirmed' => 'Konfirmasi kata sandi tidak cocok.', + 'password.min' => 'Kata sandi minimal 6 karakter.', + 'password.max' => 'Kata sandi maksimal 20 karakter.', + ]); + + $status = Password::reset( + $request->only('email', 'password', 'password_confirmation', 'token'), + function (User $user) use ($request) { + $user->forceFill([ + 'password' => Hash::make($request->password), + 'remember_token' => Str::random(60), + ])->save(); + + event(new PasswordReset($user)); + } + ); + + return $status == Password::PASSWORD_RESET + ? redirect()->route('login')->with('status', 'Kata sandi berhasil diperbarui. Silakan login.') + : back()->withInput($request->only('email')) + ->withErrors(['email' => 'Token reset tidak valid atau sudah kedaluwarsa.']); + } +} diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/PasswordController.php new file mode 100644 index 0000000..6916409 --- /dev/null +++ b/app/Http/Controllers/Auth/PasswordController.php @@ -0,0 +1,29 @@ +validateWithBag('updatePassword', [ + 'current_password' => ['required', 'current_password'], + 'password' => ['required', Password::defaults(), 'confirmed'], + ]); + + $request->user()->update([ + 'password' => Hash::make($validated['password']), + ]); + + return back()->with('status', 'password-updated'); + } +} diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php new file mode 100644 index 0000000..c71a03f --- /dev/null +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -0,0 +1,44 @@ +validate([ + 'email' => ['required', 'email'], + ], [ + 'email.required' => 'Email wajib diisi.', + 'email.email' => 'Format email tidak valid.', + ]); + + $status = Password::sendResetLink( + $request->only('email') + ); + + return $status == Password::RESET_LINK_SENT + ? back()->with('status', 'Link reset kata sandi berhasil dikirim ke email Anda.') + : back()->withInput($request->only('email')) + ->withErrors(['email' => 'Email tidak ditemukan dalam sistem.']); + } +} diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php new file mode 100644 index 0000000..0739e2e --- /dev/null +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -0,0 +1,50 @@ +validate([ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class], + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + ]); + + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => Hash::make($request->password), + ]); + + event(new Registered($user)); + + Auth::login($user); + + return redirect(route('dashboard', absolute: false)); + } +} diff --git a/app/Http/Controllers/Auth/VerifyEmailController.php b/app/Http/Controllers/Auth/VerifyEmailController.php new file mode 100644 index 0000000..784765e --- /dev/null +++ b/app/Http/Controllers/Auth/VerifyEmailController.php @@ -0,0 +1,27 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(route('dashboard', absolute: false).'?verified=1'); + } + + if ($request->user()->markEmailAsVerified()) { + event(new Verified($request->user())); + } + + return redirect()->intended(route('dashboard', absolute: false).'?verified=1'); + } +} diff --git a/app/Http/Controllers/AyamController.php b/app/Http/Controllers/AyamController.php new file mode 100644 index 0000000..aecd047 --- /dev/null +++ b/app/Http/Controllers/AyamController.php @@ -0,0 +1,288 @@ +isKaryawan()) { + $query->where('user_id', $user->id); + } + + if ($request->search) { + $query->where(function ($q) use ($request) { + $q->whereHas('kandang', function ($k) use ($request) { + $k->where('nama_kandang', 'like', '%' . $request->search . '%'); + })->orWhere('keterangan', 'like', '%' . $request->search . '%'); + }); + } + + if ($request->kandang) $query->where('kandang_id', $request->kandang); + if ($request->bulan) $query->whereMonth('tanggal', $request->bulan); + if ($request->tahun) $query->whereYear('tanggal', $request->tahun); + + $perPage = $request->perPage ?? 10; + $data = $query + ->orderBy('tanggal', 'desc') // tanggal terbaru dulu + ->orderBy('id', 'desc') // jika tanggal sama, yang terakhir ditambah tetap di atas + ->paginate($perPage) + ->withQueryString(); + + // jumlah ayam terakhir per kandang + $kandang = Kandang::query() + ->select('id', 'nama_kandang') + ->selectSub(function ($q) { + $q->from('mutasi_ayam') + ->whereColumn('mutasi_ayam.kandang_id', 'kandang.id') + ->selectRaw(" + COALESCE(SUM( + CASE + WHEN jenis_mutasi = 'masuk' THEN jumlah + WHEN jenis_mutasi IN ('mati','afkir','pindah') THEN -jumlah + ELSE 0 + END + ), 0) + "); + }, 'jumlah_ayam_terakhir') + ->get(); + + return view('inventori-ayam', compact('data', 'kandang')); + } + + public function store(Request $request) + { + $request->validate([ + 'jenis_mutasi' => 'required|in:masuk,mati,afkir,pindah', + 'jumlah' => 'required|integer|min:1|max:9999', + 'tanggal' => 'required|date|before_or_equal:today', + ], [ + 'jenis_mutasi.required' => 'Jenis mutasi wajib dipilih.', + 'jenis_mutasi.in' => 'Jenis mutasi tidak valid.', + + 'jumlah.required' => 'Jumlah ayam wajib diisi.', + 'jumlah.integer' => 'Jumlah ayam harus berupa angka.', + 'jumlah.min' => 'Jumlah ayam minimal 1 ekor.', + + 'tanggal.required' => 'Tanggal wajib diisi.', + 'tanggal.date' => 'Format tanggal tidak valid.', + 'tanggal.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.', + ]); + + DB::transaction(function () use ($request) { + + // PINDAH + if ($request->jenis_mutasi === 'pindah') { + + $request->validate([ + 'kandang_asal_id' => 'required|exists:kandang,id|different:kandang_tujuan_id', + 'kandang_tujuan_id' => 'required|exists:kandang,id', + ], [ + 'kandang_asal_id.required' => 'Kandang asal wajib dipilih.', + 'kandang_asal_id.different' => 'Kandang asal dan tujuan tidak boleh sama.', + 'kandang_tujuan_id.required' => 'Kandang tujuan wajib dipilih.', + ]); + + $kandangAsal = Kandang::findOrFail($request->kandang_asal_id); + $kandangTujuan = Kandang::findOrFail($request->kandang_tujuan_id); + + $stokAsal = $kandangAsal->mutasiAyam() + ->selectRaw(" +COALESCE(SUM( +CASE +WHEN jenis_mutasi='masuk' THEN jumlah +WHEN jenis_mutasi IN ('mati','afkir','pindah') THEN -jumlah +ELSE 0 END +),0) as stok +")->value('stok'); + + if ($stokAsal <= 0) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'jumlah' => 'Stok kandang asal sudah habis.' + ]); + } + + if ($request->jumlah > $stokAsal) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'jumlah' => "Stok kandang asal hanya $stokAsal ekor." + ]); + } + + MutasiAyam::create([ + 'kandang_id' => $request->kandang_asal_id, + 'user_id' => Auth::id(), + 'jenis_mutasi' => 'pindah', + 'jumlah' => $request->jumlah, + 'tanggal' => $request->tanggal, + 'keterangan' => 'Pindah ke ' . $kandangTujuan->nama_kandang, + ]); + + MutasiAyam::create([ + 'kandang_id' => $request->kandang_tujuan_id, + 'user_id' => Auth::id(), + 'jenis_mutasi' => 'masuk', + 'jumlah' => $request->jumlah, + 'tanggal' => $request->tanggal, + 'keterangan' => 'Pindahan dari ' . $kandangAsal->nama_kandang, + ]);} + + // MUTASI BIASA + else { + + $request->validate([ + 'kandang_id' => 'required|exists:kandang,id', + ], [ + 'kandang_id.required' => 'Nama kandang wajib dipilih.', + 'kandang_id.exists' => 'Kandang tidak ditemukan.', + ]); + + $kandang = Kandang::findOrFail($request->kandang_id); + + $stok = $kandang->mutasiAyam()->selectRaw(" +COALESCE(SUM( +CASE +WHEN jenis_mutasi='masuk' THEN jumlah +WHEN jenis_mutasi IN ('mati','afkir','pindah') THEN -jumlah +ELSE 0 END +),0) as stok +")->value('stok'); + + // Kalau mutasi keluar/mati/afkir → cek stok + if (in_array($request->jenis_mutasi, ['mati', 'afkir'])) { + + if ($stok <= 0) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'jumlah' => 'Stok ayam di kandang ini sudah habis.' + ]); + } + + if ($request->jumlah > $stok) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'jumlah' => "Stok hanya tersisa $stok ekor." + ]); + } + } + + MutasiAyam::create([ + 'kandang_id' => $request->kandang_id, + 'user_id' => Auth::id(), + 'jenis_mutasi' => $request->jenis_mutasi, + 'jumlah' => $request->jumlah, + 'tanggal' => $request->tanggal, + 'keterangan' => $request->keterangan, + ]); + } + }); + + return redirect()->route('ayam') + ->with('success', 'Data mutasi berhasil disimpan.'); + } + + public function update(Request $request, $id) + { + $mutasi = MutasiAyam::findOrFail($id); + + /** @var \App\Models\User $user */ + $user = Auth::user(); + + if ($user->isKaryawan() && $mutasi->user_id !== $user->id) { + abort(403, 'Tidak diizinkan mengedit data ini.'); + } + // VALIDASI MANUAL + $validator = Validator::make($request->all(), [ + 'kandang_id' => 'required|exists:kandang,id', + 'jenis_mutasi' => 'required|in:masuk,mati,afkir', + 'jumlah' => 'required|integer|min:1', + 'tanggal' => 'required|date|before_or_equal:today', + ], [ + 'kandang_id.required' => 'Nama kandang wajib dipilih.', + 'kandang_id.exists' => 'Kandang tidak ditemukan.', + 'jenis_mutasi.required' => 'Jenis mutasi wajib dipilih.', + 'jenis_mutasi.in' => 'Jenis mutasi tidak valid.', + 'jumlah.required' => 'Jumlah ayam wajib diisi.', + 'jumlah.integer' => 'Jumlah ayam harus berupa angka.', + 'jumlah.min' => 'Jumlah ayam minimal 1 ekor.', + 'tanggal.required' => 'Tanggal wajib diisi.', + 'tanggal.date' => 'Format tanggal tidak valid.', + 'tanggal.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.', + ]); + + if ($validator->fails()) { + return back() + ->withErrors($validator) + ->withInput() + ->with('edit_id', $mutasi->id); + } + + // HITUNG STOK + $kandang = Kandang::findOrFail($request->kandang_id); + + $stok = $kandang->mutasiAyam() + ->where('id', '!=', $mutasi->id) + ->selectRaw(" +COALESCE(SUM( +CASE +WHEN jenis_mutasi='masuk' THEN jumlah +WHEN jenis_mutasi IN ('mati','afkir','pindah') THEN -jumlah +ELSE 0 END +),0) as stok +")->value('stok'); + + // kembalikan stok lama jika mutasi lama adalah pengurang + if (in_array($mutasi->jenis_mutasi, ['mati', 'afkir', 'pindah'])) { + $stok += $mutasi->jumlah; + } + // CEK STOK + if (in_array($request->jenis_mutasi, ['mati', 'afkir'])) { + + if ($stok <= 0) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'jumlah' => 'Stok ayam di kandang ini sudah habis.' + ]); + } + + if ($request->jumlah > $stok) { + throw \Illuminate\Validation\ValidationException::withMessages([ + 'jumlah' => "Stok hanya tersisa $stok ekor." + ]); + } + } + + // UPDATE DATA + $mutasi->update([ + 'kandang_id' => $request->kandang_id, + 'jenis_mutasi' => $request->jenis_mutasi, + 'jumlah' => $request->jumlah, + 'tanggal' => $request->tanggal, + 'keterangan' => $request->keterangan, + ]); + + return redirect()->route('ayam') + ->with('success', 'Data berhasil diperbarui.'); + } + public function destroy($id) + { + /** @var \App\Models\User $user */ + $user = Auth::user(); + + if ($user->isKaryawan()) { + abort(403, 'Karyawan tidak boleh menghapus data.'); + } + + MutasiAyam::findOrFail($id)->delete(); + + return redirect()->route('ayam') + ->with('success', 'Data berhasil dihapus.'); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ +perPage ?? 10; + + $query = GajiKaryawan::with('karyawan'); + + // SEARCH GLOBAL + if ($request->search) { + + $search = $request->search; + + $query->where(function ($q) use ($search) { + + // Cari nama karyawan + $q->whereHas('karyawan', function ($sub) use ($search) { + $sub->where('nama_karyawan', 'like', '%' . $search . '%'); + }) + + // Cari bulan + ->orWhere('bulan', 'like', '%' . $search . '%') + // Cari tahun + ->orWhere('tahun', 'like', '%' . $search . '%') + // Cari gaji + ->orWhere('gaji_pokok', 'like', '%' . $search . '%') + // Cari tanggal bayar + ->orWhere('tanggal_bayar', 'like', '%' . $search . '%'); + }); + } + + + // FILTER BULAN + if ($request->bulan) { + $query->where('bulan', $request->bulan); + } + + // FILTER TAHUN + if ($request->tahun) { + $query->where('tahun', $request->tahun); + } + + $gaji = $query + ->orderByDesc('id') + ->paginate($perPage) + ->withQueryString(); + + $karyawan = Karyawan::where('status_karyawan', 'aktif') + ->orderBy('nama_karyawan') + ->get(); + + return view('gaji', compact('gaji', 'karyawan', 'perPage')); + } + + public function store(Request $request) + { + // Bersihkan format rupiah dulu sebelum validasi + $request->merge([ + 'gaji_pokok' => preg_replace('/[^0-9]/', '', $request->gaji_pokok) + ]); + + // Validasi + $request->validate( + [ + 'karyawan_id' => 'required|exists:karyawan,id', + 'bulan' => 'required|integer|min:1|max:12', + 'tahun' => 'required|integer|min:2000|max:' . date('Y'), + 'gaji_pokok' => 'required|numeric|min:100000|max:9999999', + 'tanggal_bayar' => 'required|date|before_or_equal:today' + ], + [ + 'karyawan_id.required' => 'Karyawan wajib dipilih', + 'karyawan_id.exists' => 'Karyawan tidak valid', + + 'bulan.required' => 'Bulan wajib dipilih', + 'bulan.min' => 'Bulan tidak valid', + 'bulan.max' => 'Bulan tidak valid', + + 'tahun.required' => 'Tahun wajib diisi', + 'tahun.integer' => 'Tahun harus berupa angka', + 'tahun.max' => 'Tahun tidak boleh melebihi tahun sekarang', + 'tahun.min' => 'Tahun tidak valid', + + 'gaji_pokok.required' => 'Gaji pokok wajib diisi', + 'gaji_pokok.numeric' => 'Gaji pokok harus berupa angka', + 'gaji_pokok.max' => 'Gaji pokok maksimal Rp 9.999.999', + 'gaji_pokok.min' => 'Gaji pokok minimal Rp 100.000', + + 'tanggal_bayar.required' => 'Tanggal pembayaran wajib diisi', + 'tanggal_bayar.date' => 'Format tanggal tidak valid', + 'tanggal_bayar.before_or_equal' => 'Tanggal pembayaran tidak boleh melebihi hari ini.', + ] + ); + + // Cegah gaji dobel + $cek = GajiKaryawan::where('karyawan_id', $request->karyawan_id) + ->where('bulan', $request->bulan) + ->where('tahun', $request->tahun) + ->exists(); + + if ($cek) { + return back() + ->withErrors([ + 'bulan' => 'Gaji untuk bulan dan tahun ini sudah dicatat' + ]) + ->withInput(); + } + + // Simpan + GajiKaryawan::create([ + 'karyawan_id' => $request->karyawan_id, + 'bulan' => $request->bulan, + 'tahun' => $request->tahun, + 'gaji_pokok' => $request->gaji_pokok, + 'tanggal_bayar' => $request->tanggal_bayar, + 'status_bayar' => 'dibayar', + ]); + + return redirect()->route('gaji') + ->with('success', 'Pembayaran gaji berhasil dicatat'); + } +} diff --git a/app/Http/Controllers/HasilController.php b/app/Http/Controllers/HasilController.php new file mode 100644 index 0000000..8452877 --- /dev/null +++ b/app/Http/Controllers/HasilController.php @@ -0,0 +1,183 @@ +whereHas( + 'kandang', + fn($q) => + $q->where('jenis_kandang', 'Produksi') + ); + + /** @var User $user */ + $user = Auth::user(); + + // FILTER ROLE + if ($user->isKaryawan()) { + $query->where('user_id', $user->id); + } + + // SEARCH GLOBAL + if ($request->search) { + + $search = $request->search; + + $query->where(function ($q) use ($search) { + + $q->whereHas('kandang', function ($sub) use ($search) { + $sub->where('nama_kandang', 'like', '%' . $search . '%'); + }) + ->orWhere('shift', 'like', '%' . $search . '%') + ->orWhere('tanggal_produksi', 'like', '%' . $search . '%') + ->orWhere('berat_telur_layak', 'like', '%' . $search . '%') + ->orWhere('berat_telur_rusak', 'like', '%' . $search . '%') + ->orWhereRaw("CAST(berat_telur_total AS CHAR) LIKE ?", ["%$search%"]); + }); + } + + if ($request->kandang) { + $query->where('kandang_id', $request->kandang); + } + + if ($request->bulan) { + $query->whereMonth('tanggal_produksi', $request->bulan); + } + + if ($request->tahun) { + $query->whereYear('tanggal_produksi', $request->tahun); + } + $perPage = $request->perPage ?? 10; + + + $data = $query + ->orderByDesc('tanggal_produksi') + ->orderByDesc('created_at') + ->paginate($perPage) + ->withQueryString(); + + + $kandang = Kandang::where('jenis_kandang', 'Produksi')->get(); + $tahunList = ProduksiTelur::selectRaw('YEAR(tanggal_produksi) as tahun') + ->distinct() + ->orderBy('tahun', 'desc') + ->pluck('tahun'); + + return view('produksi-hasil', compact('data', 'kandang', 'tahunList')); + } + + public function store(Request $request) + { + $request->validate([ + 'kandang_id' => 'required|exists:kandang,id', + 'shift' => 'required|in:pagi,sore', + 'berat_telur_layak' => 'required|regex:/^\d{1,6}(\.\d{1,2})?$/', + 'berat_telur_rusak' => 'required|regex:/^\d{1,6}(\.\d{1,2})?$/', + 'tanggal_produksi' => [ + 'required', + 'date_format:Y-m-d', + 'after_or_equal:2000-01-01', + 'before_or_equal:today', + ], + ], [ + 'kandang_id.required' => 'Kandang wajib dipilih.', + 'shift.required' => 'Shift wajib dipilih.', + 'berat_telur_layak.required' => 'Berat telur layak wajib diisi.', + 'berat_telur_layak.regex' => 'Berat telur layak maksimal 6 digit dan hanya boleh angka desimal.', + 'berat_telur_rusak.required' => 'Berat telur rusak wajib diisi.', + 'berat_telur_rusak.regex' => 'Berat telur rusak maksimal 6 digit dan hanya boleh angka desimal.', + 'tanggal_produksi.required' => 'Tanggal produksi wajib diisi.', + 'tanggal_produksi.date_format' => 'Format tanggal harus YYYY-MM-DD.', + 'tanggal_produksi.after_or_equal' => 'Tanggal terlalu lama dan tidak valid.', + 'tanggal_produksi.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.', + ]); + + + $total = $request->berat_telur_layak + $request->berat_telur_rusak; + + ProduksiTelur::create([ + 'kandang_id' => $request->kandang_id, + 'user_id' => Auth::id(), + 'shift' => $request->shift, + 'berat_telur_layak' => $request->berat_telur_layak, + 'berat_telur_rusak' => $request->berat_telur_rusak, + 'berat_telur_total' => $total, + 'tanggal_produksi' => $request->tanggal_produksi, + ]); + + return redirect()->route('hasil') + ->with('success', 'Data produksi berhasil ditambahkan.'); + } + + + public function update(Request $request, $id) + { + $request->validate([ + 'kandang_id' => 'required|exists:kandang,id', + 'shift' => 'required|in:pagi,sore', + 'berat_telur_layak' => 'required|regex:/^\d{1,6}(\.\d{1,2})?$/', + 'berat_telur_rusak' => 'required|regex:/^\d{1,6}(\.\d{1,2})?$/', + 'tanggal_produksi' => [ + 'required', + 'date_format:Y-m-d', + 'after_or_equal:2000-01-01', + 'before_or_equal:today', + ], + ], [ + 'kandang_id.required' => 'Kandang wajib dipilih.', + 'kandang_id.exists' => 'Kandang tidak ditemukan.', + 'shift.required' => 'Shift wajib dipilih.', + 'shift.in' => 'Shift harus pagi atau sore.', + 'berat_telur_layak.required' => 'Berat telur layak wajib diisi.', + 'berat_telur_layak.regex' => 'Berat telur layak maksimal 6 digit dan hanya boleh angka desimal.', + 'berat_telur_rusak.required' => 'Berat telur rusak wajib diisi.', + 'berat_telur_rusak.regex' => 'Berat telur rusak maksimal 6 digit dan hanya boleh angka desimal.', + 'tanggal_produksi.required' => 'Tanggal produksi wajib diisi.', + 'tanggal_produksi.date' => 'Tanggal produksi tidak valid.', + 'tanggal_produksi.date_format' => 'Format tanggal harus YYYY-MM-DD.', + 'tanggal_produksi.after_or_equal' => 'Tanggal terlalu lama dan tidak valid.', + 'tanggal_produksi.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.', + ]); + + + $total = $request->berat_telur_layak + $request->berat_telur_rusak; + + ProduksiTelur::findOrFail($id)->update([ + 'kandang_id' => $request->kandang_id, + 'shift' => $request->shift, + 'berat_telur_layak' => $request->berat_telur_layak, + 'berat_telur_rusak' => $request->berat_telur_rusak, + 'berat_telur_total' => $total, + 'tanggal_produksi' => $request->tanggal_produksi, + ]); + + return redirect()->route('hasil') + ->with('success', 'Data produksi berhasil diperbarui.'); + } + + + public function destroy($id) + { + /** @var User $user */ + $user = Auth::user(); + + if ($user->isKaryawan()) { + abort(403, 'Anda tidak memiliki izin menghapus data.'); + } + + ProduksiTelur::findOrFail($id)->delete(); + + return back()->with('success', 'Data produksi berhasil dihapus.'); + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..47c3b31 --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,165 @@ +sum('jumlah'); + $jumlahKeluar = MutasiAyam::whereIn('jenis_mutasi', ['keluar', 'mati', 'afkir', 'pindah'])->sum('jumlah'); + $jumlahAyam = $jumlahMasuk - $jumlahKeluar; + + $produksiHariIni = ProduksiTelur::whereDate('tanggal_produksi', $today) + ->sum(DB::raw('berat_telur_layak + berat_telur_rusak')); + + // total stok pakan global (yang lama) + $stokPakan = InventoriKandang::where('jenis_transaksi', 'masuk')->sum('jumlah') + - InventoriKandang::where('jenis_transaksi', 'keluar')->sum('jumlah'); + + // stok per barang + deteksi stok menipis + $stok = InventoriKandang::selectRaw(" + nama_barang, + SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) + - + SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) + AS stok +") + ->groupBy('nama_barang') + ->get(); + + $batasMinimum = [ + 'Jagung' => 5, + 'Katul' => 5, + 'Konsentrat' => 5, + 'Pakan Layer' => 5, + 'Pakan Starter' => 5, + ]; + + $stokMenipis = $stok->filter(function ($item) use ($batasMinimum) { + $min = $batasMinimum[$item->nama_barang] ?? 5; + return $item->stok <= $min; + }); + // untuk Admin & Karyawan + $pendapatanHariIni = Penjualan::whereDate('tanggal_penjualan', $today) + ->sum('total_penjualan'); + $bulan = request('bulan', now()->month); + $minggu = request('minggu', ceil(now()->day / 7)); + $tahun = request('tahun', now()->year); + + $query = ProduksiTelur::select( + DB::raw('DATE(tanggal_produksi) as tanggal'), + DB::raw('SUM(berat_telur_layak + berat_telur_rusak) as total') + ) + ->whereYear('tanggal_produksi', $tahun) + ->whereMonth('tanggal_produksi', $bulan); + + if ($minggu) { + $query->whereRaw('CEIL(DAY(tanggal_produksi) / 7) = ?', [$minggu]); + } + + $produksiMingguan = $query + ->groupBy('tanggal') + ->orderBy('tanggal') + ->get(); + + $chartProduksiLabels = $produksiMingguan->pluck('tanggal') + ->map(fn($tgl) => Carbon::parse($tgl)->format('d M')); + + $chartProduksiData = $produksiMingguan->pluck('total'); + + + /* CHART KEUANGAN (ADMIN ONLY)*/ + if ($user->isAdmin()) { + + $finance = DB::table('penjualan') + ->selectRaw(' + CEIL(DAY(tanggal_penjualan)/7) as minggu, + SUM(total_penjualan) as pemasukan + ') + ->whereYear('tanggal_penjualan', $tahun) + ->whereMonth('tanggal_penjualan', $bulan) + ->groupBy('minggu') + ->orderBy('minggu') + ->get(); + + + /* PENGELUARAN INVENTORI */ + $pengeluaranInventori = DB::table('inventori_kandang') + ->selectRaw(' + CEIL(DAY(created_at)/7) as minggu, + SUM(total_harga) as total + ') + ->whereYear('created_at', $tahun) + ->whereMonth('created_at', $bulan) + ->where('jenis_transaksi', 'masuk') + ->groupBy('minggu') + ->pluck('total', 'minggu'); + + + /* GAJI KARYAWAN (dibagi rata per minggu) */ + $gajiBulanan = DB::table('gaji_karyawan') + ->where('tahun', $tahun) + ->where('bulan', $bulan) + ->sum('gaji_pokok'); + + $gajiMingguan = $gajiBulanan / 4; + + + $chartFinanceLabels = []; + $chartFinancePemasukan = []; + $chartFinancePengeluaran = []; + + + foreach ($finance as $row) { + + $minggu = $row->minggu; + + $chartFinanceLabels[] = 'Minggu ' . $minggu; + + $chartFinancePemasukan[] = $row->pemasukan; + + $pengeluaranInventoriMinggu = $pengeluaranInventori[$minggu] ?? 0; + + $chartFinancePengeluaran[] = + $pengeluaranInventoriMinggu + $gajiMingguan; + } + } else { + $chartFinanceLabels = []; + $chartFinancePemasukan = []; + $chartFinancePengeluaran = []; + } + + + return view('home', compact( + 'jumlahAyam', + 'produksiHariIni', + 'stokPakan', + 'stokMenipis', + + 'pendapatanHariIni', + 'chartProduksiLabels', + 'chartProduksiData', + 'chartFinanceLabels', + 'chartFinancePemasukan', + 'chartFinancePengeluaran' + )); + } +} diff --git a/app/Http/Controllers/KaryawanController.php b/app/Http/Controllers/KaryawanController.php new file mode 100644 index 0000000..bb26809 --- /dev/null +++ b/app/Http/Controllers/KaryawanController.php @@ -0,0 +1,184 @@ +search) { + $query->where(function ($q) use ($request) { + $q->where('nama_karyawan', 'like', '%' . $request->search . '%') + ->orWhere('no_hp', 'like', '%' . $request->search . '%') + ->orWhere('alamat', 'like', '%' . $request->search . '%'); // ✅ TAMBAHAN + }); + } + + // FILTER STATUS + if ($request->status) { + $query->where('status_karyawan', $request->status); + } + + $perPage = in_array($request->perPage, [10, 25, 50]) ? $request->perPage : 10; + + $data = $query + ->orderBy('created_at', 'desc') + ->paginate($perPage) + ->withQueryString(); + + return view('karyawan', compact('data')); + } + + public function store(Request $request) + { + $request->validate( + [ + 'nama_karyawan' => 'required|string|min:3|max:100', + 'no_hp' => ['required', 'regex:/^08[0-9]{8,11}$/'], + 'alamat' => 'required|string|max:255', + 'status_karyawan' => 'required|in:aktif,nonaktif', + ], + [ + 'nama_karyawan.required' => 'Nama karyawan wajib diisi', + 'nama_karyawan.string' => 'Nama karyawan harus berupa teks', + 'nama_karyawan.min' => 'Nama karyawan minimal 3 karakter', + 'nama_karyawan.max' => 'Nama karyawan maksimal 100 karakter', + + 'no_hp.required' => 'Nomor HP wajib diisi', + 'no_hp.regex' => 'Nomor HP harus 10–13 digit, diawali 08, dan hanya angka.', + + 'alamat.required' => 'Alamat wajib diisi', + 'alamat.string' => 'Alamat harus berupa teks', + 'alamat.max' => 'Alamat maksimal 255 karakter', + + 'status_karyawan.required' => 'Status karyawan wajib dipilih', + 'status_karyawan.in' => 'Status karyawan tidak valid', + ] + ); + + $userId = null; + + if ($request->has_login) { + $request->validate( + [ + 'email' => 'required|email|unique:users,email', + 'password' => 'required|string|min:6|max:20', + ], + [ + 'email.required' => 'Email wajib diisi', + 'email.email' => 'Format email tidak valid', + 'email.unique' => 'Email sudah terdaftar', + + 'password.required' => 'Password wajib diisi', + 'password.string' => 'Password harus berupa teks', + 'password.min' => 'Password minimal 6 karakter', + 'password.max' => 'Password maksimal 20 karakter', + ] + ); + + $user = User::create([ + 'name' => $request->nama_karyawan, + 'email' => $request->email, + 'no_hp' => $request->no_hp, + 'alamat' => $request->alamat, + 'password' => Hash::make($request->password), + 'is_active' => true, + ]); + + $userId = $user->id; + } + + Karyawan::create([ + 'user_id' => $userId, + 'nama_karyawan' => $request->nama_karyawan, + 'no_hp' => $request->no_hp, + 'alamat' => $request->alamat, + 'status_karyawan' => $request->status_karyawan, + ]); + + return redirect()->route('karyawan') + ->with('success', 'Karyawan berhasil ditambahkan'); + } + + public function update(Request $request, $id) + { + $request->validate( + [ + 'nama_karyawan' => 'required|string|min:3|max:100', + 'no_hp' => ['required', 'regex:/^08[0-9]{8,11}$/'], + 'alamat' => 'required|string|max:255', + ], + [ + 'nama_karyawan.required' => 'Nama karyawan wajib diisi', + 'nama_karyawan.string' => 'Nama karyawan harus berupa teks', + 'nama_karyawan.min' => 'Nama karyawan minimal 3 karakter', + 'nama_karyawan.max' => 'Nama karyawan maksimal 100 karakter', + + 'no_hp.required' => 'Nomor HP wajib diisi', + 'no_hp.regex' => 'Nomor HP harus 10–13 digit, diawali 08, dan hanya angka.', + + 'alamat.required' => 'Alamat wajib diisi', + 'alamat.string' => 'Alamat harus berupa teks', + 'alamat.max' => 'Alamat maksimal 255 karakter', + ] + ); + + $karyawan = Karyawan::findOrFail($id); + + $karyawan->update([ + 'nama_karyawan' => $request->nama_karyawan, + 'no_hp' => $request->no_hp, + 'alamat' => $request->alamat, + ]); + + return redirect()->route('karyawan') + ->with('success', 'Data karyawan berhasil diperbarui'); + } + + + public function nonaktifkan($id) + { + $karyawan = Karyawan::with('user')->findOrFail($id); + + $karyawan->update([ + 'status_karyawan' => 'nonaktif' + ]); + + // OPTIONAL: kalau punya akun, sekalian matikan akses login + if ($karyawan->user) { + $karyawan->user->update([ + 'is_active' => false + ]); + } + + return redirect()->route('karyawan') + ->with('success', 'Karyawan berhasil dinonaktifkan'); + } + + public function aktifkan($id) + { + $karyawan = Karyawan::with('user')->findOrFail($id); + + $karyawan->update([ + 'status_karyawan' => 'aktif' + ]); + + // OPTIONAL + if ($karyawan->user) { + $karyawan->user->update([ + 'is_active' => true + ]); + } + + return redirect()->route('karyawan') + ->with('success', 'Karyawan berhasil diaktifkan kembali'); + } +} diff --git a/app/Http/Controllers/KeuanganController.php b/app/Http/Controllers/KeuanganController.php new file mode 100644 index 0000000..5f9e8cb --- /dev/null +++ b/app/Http/Controllers/KeuanganController.php @@ -0,0 +1,154 @@ +orderByDesc('created_at'); + /** @var \App\Models\User $user */ + + $user = Auth::user(); + + if ($user->isKaryawan()) { + $query->where('user_id', $user->id); + } + + // FILTER PRODUK AKTIF + if ($request->produk) { + $query->where('jenis_produk', $request->produk); + } + + // SEARCH GLOBAL + if ($request->search) { + + $s = $request->search; + + $query->where(function ($q) use ($s) { + + // cari jenis produk (telur / afkir) + $q->where('jenis_produk', 'like', "%$s%") + ->orWhere('berat_terjual', 'like', "%$s%") + ->orWhere('harga_satuan', 'like', "%$s%") + ->orWhere('total_penjualan', 'like', "%$s%") + ->orWhere('tanggal_penjualan', 'like', "%$s%") + ->orWhereRaw("DATE_FORMAT(tanggal_penjualan, '%Y-%m-%d') like ?", ["%$s%"]); + }); + } + + + if ($request->bulan) { + $query->whereMonth('tanggal_penjualan', $request->bulan); + } + + if ($request->tahun) { + $query->whereYear('tanggal_penjualan', $request->tahun); + } + + return view('produksi-keuangan', [ + 'penjualans' => $query->paginate($request->perPage ?? 10)->withQueryString(), + 'produks' => [ + 'telur' => 'Telur Ayam', + 'afkir' => 'Ayam Afkir', + ], + ]); + } + + public function store(Request $request) + { + $request->validate( + [ + 'tanggal' => 'required|date|before_or_equal:today', + 'jenis_produk' => 'required|in:telur,afkir', + 'jumlah' => 'required|numeric|min:0.1|max:9999', + 'harga_satuan' => 'required|numeric|min:1|max:99999999', + ], + [ + 'tanggal.required' => 'Tanggal penjualan wajib diisi.', + 'tanggal.date' => 'Tanggal penjualan tidak valid.', + 'jenis_produk.required' => 'Jenis produk wajib diisi.', + 'jumlah.required' => 'Jumlah penjualan wajib diisi.', + 'jumlah.numeric' => 'Jumlah harus berupa angka.', + 'jumlah.min' => 'Jumlah minimal 0,1 Kg.', + 'harga_satuan.required' => 'Harga satuan wajib diisi.', + 'harga_satuan.numeric' => 'Harga satuan harus berupa angka.', + 'harga_satuan.min' => 'Harga satuan minimal Rp 1.', + ] + ); + + + Penjualan::create([ + 'user_id' => Auth::id(), + 'jenis_produk' => $request->jenis_produk, + 'berat_terjual' => $request->jumlah, + 'harga_satuan' => $request->harga_satuan, + 'total_penjualan' => $request->jumlah * $request->harga_satuan, + 'tanggal_penjualan' => $request->tanggal, + ]); + + return back()->with('success', 'Penjualan berhasil ditambahkan.'); + } + public function update(Request $request, $id) + { + $penjualan = Penjualan::findOrFail($id); + + $validated = $request->validate( + [ + 'tanggal' => 'required|date|before_or_equal:today', + 'jenis_produk' => 'required|in:telur,afkir', + 'jumlah' => 'required|numeric|min:0.1', + 'harga_satuan' => 'required|numeric|min:1', + ], + [ + 'tanggal.required' => 'Tanggal penjualan wajib diisi.', + 'tanggal.date' => 'Tanggal penjualan tidak valid.', + 'jenis_produk.required' => 'Jenis produk wajib diisi.', + 'jumlah.required' => 'Jumlah penjualan wajib diisi.', + 'jumlah.numeric' => 'Jumlah harus berupa angka.', + 'jumlah.min' => 'Jumlah minimal 0,1 Kg.', + 'harga_satuan.required' => 'Harga satuan wajib diisi.', + 'harga_satuan.numeric' => 'Harga satuan harus berupa angka.', + 'harga_satuan.min' => 'Harga satuan minimal Rp 1.', + ] + ); + + $penjualan->update([ + 'berat_terjual' => $validated['jumlah'], + 'jenis_produk' => $validated['jenis_produk'], + 'harga_satuan' => $validated['harga_satuan'], + 'total_penjualan' => $validated['jumlah'] * $validated['harga_satuan'], + 'tanggal_penjualan' => $validated['tanggal'], + ]); + + return redirect()->back()->with('success', 'Penjualan berhasil diupdate.'); + } + + + public function destroy($id) + { + /** @var \App\Models\User $user */ + + $user = Auth::user(); + + if ($user->isKaryawan()) { + abort(403); + } + + Penjualan::findOrFail($id)->delete(); + + return back()->with('success', 'Penjualan berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php new file mode 100644 index 0000000..cda2658 --- /dev/null +++ b/app/Http/Controllers/LaporanController.php @@ -0,0 +1,102 @@ +get('tahun', now()->year); + + return view('laporan', [ + 'tahun' => $tahun, + 'produksi' => $this->laporanProduksi($tahun), + 'inventori' => $this->laporanInventori($tahun), + 'keuangan' => $this->laporanKeuangan($tahun), + ]); + } + + + private function laporanProduksi(int $tahun) + { + return DB::table('produksi_telur') + ->selectRaw(' + MONTH(tanggal_produksi) AS bulan, + CEIL(DAY(tanggal_produksi) / 7) AS minggu, + SUM(berat_telur_total) AS total_produksi + ') + ->whereYear('tanggal_produksi', $tahun) + ->groupBy('bulan', 'minggu') + ->orderBy('bulan') + ->orderBy('minggu') + ->get(); + } + + private function laporanInventori(int $tahun) + { + return DB::table('inventori_kandang') + ->selectRaw(' + MONTH(created_at) AS bulan, + CEIL(DAY(created_at) / 7) AS minggu, + SUM(CASE WHEN jenis_transaksi = "masuk" THEN jumlah ELSE 0 END) AS masuk, + SUM(CASE WHEN jenis_transaksi = "keluar" THEN jumlah ELSE 0 END) AS keluar + ') + ->whereYear('created_at', $tahun) + ->groupBy('bulan', 'minggu') + ->orderBy('bulan') + ->orderBy('minggu') + ->get(); + } + + /** + * LAPORAN KEUANGAN (BULANAN) + */ + private function laporanKeuangan(int $tahun) + { + // PEMASUKAN (PENJUALAN) + // sumber: tabel penjualan + $pemasukan = DB::table('penjualan') + ->selectRaw(' + MONTH(tanggal_penjualan) AS bulan, + SUM(total_penjualan) AS total + ') + ->whereYear('tanggal_penjualan', $tahun) + ->groupBy('bulan') + ->get(); + + // PENGELUARAN INVENTORI + $pengeluaranInventori = DB::table('inventori_kandang') + ->selectRaw(' + MONTH(created_at) AS bulan, + SUM(total_harga) AS total + ') + ->whereYear('created_at', $tahun) + ->where('jenis_transaksi', 'masuk') + ->groupBy('bulan') + ->get(); + + // GAJI KARYAWAN + $gaji = DB::table('gaji_karyawan') + ->selectRaw('bulan, SUM(gaji_pokok) AS total') + ->where('tahun', $tahun) + ->groupBy('bulan') + ->get(); + + return [ + 'pemasukan' => $pemasukan, + 'inventori' => $pengeluaranInventori, + 'gaji' => $gaji, + ]; + } + + public function export(Request $request) + { + $tahun = $request->get('tahun', now()->year); + return app(LaporanExportService::class)->export($tahun); + } +} diff --git a/app/Http/Controllers/LaporanExportController.php b/app/Http/Controllers/LaporanExportController.php new file mode 100644 index 0000000..cd06355 --- /dev/null +++ b/app/Http/Controllers/LaporanExportController.php @@ -0,0 +1,51 @@ +bulan; + $tahun = $request->tahun; + + // ambil data (contoh) + $data = ProduksiTelur::whereYear('tanggal', $tahun) + ->whereMonth('tanggal', $bulan) + ->get(); + + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + + // HEADER + $sheet->setCellValue('A1', 'Tanggal'); + $sheet->setCellValue('B1', 'Kandang'); + $sheet->setCellValue('C1', 'Jumlah Telur'); + + $row = 2; + foreach ($data as $item) { + $sheet->setCellValue('A' . $row, $item->tanggal); + $sheet->setCellValue('B' . $row, $item->kandang->nama ?? '-'); + $sheet->setCellValue('C' . $row, $item->jumlah); + $row++; + } + + $filename = "laporan-{$bulan}-{$tahun}.xlsx"; + + return new StreamedResponse(function () use ($spreadsheet) { + $writer = new Xlsx($spreadsheet); + $writer->save('php://output'); + }, 200, [ + "Content-Type" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "Content-Disposition" => "attachment; filename=\"$filename\"", + ]); + } +} diff --git a/app/Http/Controllers/PakanController.php b/app/Http/Controllers/PakanController.php new file mode 100644 index 0000000..3446898 --- /dev/null +++ b/app/Http/Controllers/PakanController.php @@ -0,0 +1,308 @@ +isKaryawan()) { + $query->where('user_id', $user->id); + } + + /* SEARCH */ + if ($request->search) { + $s = $request->search; + $query->where(function ($q) use ($s) { + $q->where('nama_barang', 'like', "%$s%") + ->orWhere('jenis_transaksi', 'like', "%$s%") + ->orWhereRaw("CAST(jumlah AS CHAR) LIKE ?", ["%$s%"]); + }); + } + + /* FILTER */ + if ($request->jenis) { + $query->where('jenis_transaksi', $request->jenis); + } + + if ($request->bulan) { + $query->whereMonth('tanggal', $request->bulan); + } + + if ($request->tahun) { + $query->whereYear('tanggal', $request->tahun); + } + + $perPage = $request->perPage ?? 10; + + // DATA TABEL + $data = $query + ->orderBy('tanggal', 'desc') + ->orderBy('id', 'desc') + ->paginate($perPage) + ->withQueryString(); + + // HITUNG STOK (GLOBAL) + $stok = InventoriKandang::selectRaw(" + nama_barang, + SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) + - + SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) + AS stok + ") + ->groupBy('nama_barang') + ->get(); + + // BATAS MINIMUM + $batasMinimum = [ + 'Jagung' => 5, + 'Katul' => 5, + 'Konsentrat' => 5, + 'Pakan Layer' => 5, + 'Pakan Starter' => 5, + ]; + + $stokMenipis = $stok->filter(function ($item) use ($batasMinimum) { + $min = $batasMinimum[$item->nama_barang] ?? 5; + return $item->stok <= $min; + }); + + return view('inventori-pakan', compact('data', 'stokMenipis')); + } + + public function store(Request $request) + { + /** @var User $user */ + $user = Auth::user(); + $request->merge([ + 'harga_satuan' => str_replace('.', '', $request->harga_satuan) + ]); + + // karyawan TIDAK BOLEH input barang masuk + if ($user->isKaryawan() && $request->jenis_transaksi === 'masuk') { + abort(403, 'Karyawan tidak diizinkan mencatat barang masuk.'); + } + $namaBarang = ucfirst(strtolower(trim($request->nama_barang))); + + $request->validate([ + 'tanggal' => 'required|date|before_or_equal:today', + 'nama_barang' => 'required|string|max:100', + 'jenis_transaksi' => 'required|in:masuk,keluar', + 'jumlah' => 'required|numeric|min:1|max:999999', + // 'satuan' => 'required|string|max:50|in:karung', + 'harga_satuan' => $request->jenis_transaksi === 'masuk' + ? 'required|numeric|min:1|max:999999999' + : 'nullable', + ], [ + 'tanggal.required' => 'Tanggal wajib diisi.', + 'tanggal.date' => 'Format tanggal tidak valid.', + + 'nama_barang.required' => 'Nama barang wajib diisi.', + 'nama_barang.string' => 'Nama barang harus berupa teks.', + 'nama_barang.max' => 'Nama barang maksimal 100 karakter.', + + 'jenis_transaksi.required' => 'Jenis transaksi wajib dipilih.', + 'jenis_transaksi.in' => 'Jenis transaksi tidak valid.', + + 'jumlah.required' => 'Jumlah wajib diisi.', + 'jumlah.numeric' => 'Jumlah harus berupa angka.', + 'jumlah.min' => 'Jumlah minimal 1.', + 'jumlah.max' => 'Jumlah terlalu besar.', + + // 'satuan.required' => 'Satuan wajib diisi.', + // 'satuan.string' => 'Satuan harus berupa teks.', + // 'satuan.max' => 'Satuan maksimal 50 karakter.', + + 'harga_satuan.required' => 'Harga satuan wajib diisi untuk transaksi masuk.', + 'harga_satuan.numeric' => 'Harga satuan harus berupa angka.', + 'harga_satuan.min' => 'Harga satuan minimal 1.', + 'harga_satuan.max' => 'Harga satuan terlalu besar.', + ]); + + + $total = null; + + if ($request->jenis_transaksi === 'masuk') { + $total = $request->jumlah * $request->harga_satuan; + } + // CEK STOK JIKA BARANG KELUAR + if ($request->jenis_transaksi === 'keluar') { + + $stokSekarang = InventoriKandang::where('nama_barang', $namaBarang) + ->selectRaw(" + SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) + - + SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) + AS stok + ") + ->value('stok') ?? 0; + + if ($request->jumlah > $stokSekarang) { + return back()->withErrors([ + 'jumlah' => 'Stok ' . $namaBarang . ' tidak mencukupi. Sisa stok: ' . $stokSekarang + ])->withInput(); + } + } + + InventoriKandang::create([ + 'user_id' => $user->id, + 'tanggal' => $request->tanggal, + 'nama_barang' => $namaBarang, + 'jenis_transaksi' => $request->jenis_transaksi, + 'jumlah' => $request->jumlah, + 'satuan' => 'karung', + 'harga_satuan' => $request->jenis_transaksi === 'masuk' ? $request->harga_satuan : null, + 'total_harga' => $total, + ]); + + return redirect()->route('pakan')->with('success', 'Transaksi berhasil disimpan'); + } + + + + public function update(Request $request, $id) + { + /** @var User $user */ + $user = Auth::user(); + $request->merge([ + 'harga_satuan' => str_replace('.', '', $request->harga_satuan) + ]); + if ($user->isKaryawan()) { + abort(403, 'Anda tidak memiliki izin mengedit data.'); + } + + $namaBarang = ucfirst(strtolower(trim($request->nama_barang))); + + $request->validate([ + 'tanggal' => 'required|date|before_or_equal:today', + 'nama_barang' => 'required|string|max:100', + 'jenis_transaksi' => 'required|in:masuk,keluar', + 'jumlah' => 'required|numeric|min:1|max:999999', + // 'satuan' => 'required|string|max:50|in:karung', + 'harga_satuan' => $request->jenis_transaksi === 'masuk' + ? 'required|numeric|min:1|max:999999999' + : 'nullable', + ], [ + 'tanggal.required' => 'Tanggal wajib diisi.', + 'tanggal.date' => 'Format tanggal tidak valid.', + + 'nama_barang.required' => 'Nama barang wajib diisi.', + 'nama_barang.string' => 'Nama barang harus berupa teks.', + 'nama_barang.max' => 'Nama barang maksimal 100 karakter.', + + 'jenis_transaksi.required' => 'Jenis transaksi wajib dipilih.', + 'jenis_transaksi.in' => 'Jenis transaksi tidak valid.', + + 'jumlah.required' => 'Jumlah wajib diisi.', + 'jumlah.numeric' => 'Jumlah harus berupa angka.', + 'jumlah.min' => 'Jumlah minimal 1.', + 'jumlah.max' => 'Jumlah terlalu besar.', + + // 'satuan.required' => 'Satuan wajib diisi.', + // 'satuan.string' => 'Satuan harus berupa teks.', + // 'satuan.max' => 'Satuan maksimal 50 karakter.', + + 'harga_satuan.required' => 'Harga satuan wajib diisi untuk transaksi masuk.', + 'harga_satuan.numeric' => 'Harga satuan harus berupa angka.', + 'harga_satuan.min' => 'Harga satuan minimal 1.', + 'harga_satuan.max' => 'Harga satuan terlalu besar.', + ]); + + $item = InventoriKandang::findOrFail($id); + + $total = null; + + if ($request->jenis_transaksi === 'masuk') { + $total = $request->jumlah * $request->harga_satuan; + } + + // CEK STOK JIKA KELUAR + if ($request->jenis_transaksi === 'keluar') { + + $stokSekarang = InventoriKandang::where('nama_barang', $namaBarang) + ->where('id', '!=', $id) + ->selectRaw(" + SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) + - + SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) + AS stok + ") + ->value('stok') ?? 0; + + if ($request->jumlah > $stokSekarang) { + return back()->withErrors([ + 'jumlah' => 'Stok tidak mencukupi. Sisa stok: ' . $stokSekarang + ])->withInput(); + } + } + + $item->update([ + 'tanggal' => $request->tanggal, + 'nama_barang' => $namaBarang, + 'jenis_transaksi' => $request->jenis_transaksi, + 'jumlah' => $request->jumlah, + 'satuan' => 'karung', + 'harga_satuan' => $request->jenis_transaksi === 'masuk' + ? $request->harga_satuan + : null, + 'total_harga' => $total, + ]); + + return redirect()->route('pakan')->with('success', 'Transaksi berhasil diupdate'); + } + + + + public function destroy($id) + { + /** @var \App\Models\User $user */ + $user = Auth::user(); + + // hanya admin boleh hapus + if ($user->isKaryawan()) { + abort(403, 'Anda tidak memiliki izin menghapus data.'); + } + + $item = InventoriKandang::findOrFail($id); + + // Cek jika yang dihapus adalah transaksi masuk + if ($item->jenis_transaksi === 'masuk') { + + $stokSekarang = InventoriKandang::where('nama_barang', $item->nama_barang) + ->selectRaw(" + SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) + - + SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) + AS stok + ") + ->value('stok') ?? 0; + + // jika setelah dihapus stok jadi minus + if (($stokSekarang - $item->jumlah) < 0) { + return redirect() + ->route('pakan') + ->withErrors([ + 'delete' => 'Transaksi tidak bisa dihapus karena akan menyebabkan stok menjadi minus.' + ]); + } + } + + $item->delete(); + + return redirect() + ->route('pakan') + ->with('success', 'Transaksi berhasil dihapus'); + } +} diff --git a/app/Http/Controllers/ProfilController.php b/app/Http/Controllers/ProfilController.php new file mode 100644 index 0000000..df71ff2 --- /dev/null +++ b/app/Http/Controllers/ProfilController.php @@ -0,0 +1,120 @@ +isKaryawan() ? $user->karyawan : null; + + return view('profil', compact('user', 'karyawan')); + } + + + public function update(Request $request) + { + /** @var \App\Models\User $user */ + $user = Auth::user(); + $request->session()->flash('active_tab', 'editProfil'); + + $rules = [ + 'name' => ['required', 'string', 'min:3', 'max:100'], + ]; + + if ($user->isKaryawan()) { + $rules['no_hp'] = ['required', 'regex:/^08[0-9]{8,11}$/']; + $rules['alamat'] = [ + 'required', + 'string', + 'min:5', + 'max:255', + 'regex:/[A-Za-z]/' + ]; + } + + $messages = [ + 'name.required' => 'Nama lengkap wajib diisi.', + 'name.string' => 'Nama lengkap harus berupa teks.', + 'name.min' => 'Nama lengkap minimal 3 karakter.', + 'name.max' => 'Nama lengkap maksimal 100 karakter.', + + 'email.required' => 'Alamat email wajib diisi.', + 'email.email' => 'Format alamat email tidak valid.', + 'email.max' => 'Alamat email maksimal 100 karakter.', + 'email.unique' => 'Alamat email sudah digunakan oleh pengguna lain.', + + 'no_hp.required' => 'Nomor telepon wajib diisi.', + 'no_hp.regex' => 'Nomor telepon harus diawali dengan 08 dan terdiri dari 10 sampai 13 digit angka.', + + 'alamat.required' => 'Alamat wajib diisi.', + 'alamat.string' => 'Alamat harus berupa teks.', + 'alamat.max' => 'Alamat maksimal 255 karakter.', + 'alamat.min' => 'Alamat minimal 5 karakter.', + 'alamat.regex' => 'Alamat harus mengandung huruf (tidak boleh angka saja).', + + ]; + + $validated = $request->validate($rules, $messages); + + $user->update([ + 'name' => $validated['name'], + ]); + + if ($user->isKaryawan()) { + $user->karyawan()->updateOrCreate( + ['user_id' => $user->id], + [ + 'nama_karyawan' => $validated['name'], + 'no_hp' => $validated['no_hp'], + 'alamat' => $validated['alamat'] ?? null, + 'status_karyawan' => 'aktif', + ] + ); + } + + return back()->with('success', 'Profil berhasil diperbarui.'); + } + + public function updatePassword(Request $request) + { + $request->session()->flash('active_tab', 'ubahPassword'); + + $request->validate([ + 'current_password' => ['required', 'current_password'], + 'password' => [ + 'required', + 'string', + 'min:8', + 'max:20', + 'confirmed', + 'regex:/^(?=.*[A-Za-z])(?=.*\d).+$/' + ], + ], [ + 'current_password.required' => 'Password lama wajib diisi.', + 'current_password.current_password' => 'Password lama yang Anda masukkan tidak sesuai.', + + 'password.required' => 'Password baru wajib diisi.', + 'password.string' => 'Password baru harus berupa teks.', + 'password.min' => 'Password baru minimal terdiri dari 8 karakter.', + 'password.max' => 'Password baru maksimal terdiri dari 20 karakter.', + 'password.confirmed' => 'Konfirmasi password baru tidak cocok.', + 'password.regex' => 'Password baru harus mengandung minimal satu huruf dan satu angka.', + ]); + + $request->user()->update([ + 'password' => Hash::make($request->password), + ]); + + return back()->with('success', 'Password berhasil diperbarui.'); + } +} diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php new file mode 100644 index 0000000..a48eb8d --- /dev/null +++ b/app/Http/Controllers/ProfileController.php @@ -0,0 +1,60 @@ + $request->user(), + ]); + } + + /** + * Update the user's profile information. + */ + public function update(ProfileUpdateRequest $request): RedirectResponse + { + $request->user()->fill($request->validated()); + + if ($request->user()->isDirty('email')) { + $request->user()->email_verified_at = null; + } + + $request->user()->save(); + + return Redirect::route('profile.edit')->with('status', 'profile-updated'); + } + + /** + * Delete the user's account. + */ + public function destroy(Request $request): RedirectResponse + { + $request->validateWithBag('userDeletion', [ + 'password' => ['required', 'current_password'], + ]); + + $user = $request->user(); + + Auth::logout(); + + $user->delete(); + + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + return Redirect::to('/'); + } +} diff --git a/app/Http/Middleware/CheckRole.php b/app/Http/Middleware/CheckRole.php new file mode 100644 index 0000000..99a3799 --- /dev/null +++ b/app/Http/Middleware/CheckRole.php @@ -0,0 +1,24 @@ +role, $roles)) { + abort(403, 'Unauthorized.'); + } + + return $next($request); + } +} diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php new file mode 100644 index 0000000..f836945 --- /dev/null +++ b/app/Http/Requests/Auth/LoginRequest.php @@ -0,0 +1,48 @@ + ['required', 'email'], + 'password' => ['required', 'string', 'min:6', 'max:20'], + ]; + } + + public function messages(): array + { + return [ + 'email.required' => 'Email wajib diisi.', + 'email.email' => 'Format email tidak valid.', + + 'password.required' => 'Kata sandi wajib diisi.', + 'password.min' => 'Kata sandi minimal 6 karakter.', + 'password.max' => 'Kata sandi maksimal 20 karakter.', + ]; + } + + public function authenticate(): void + { + if (! Auth::attempt([ + 'email' => $this->email, + 'password' => $this->password, + 'is_active' => 1 + ], $this->boolean('remember'))) { + + throw \Illuminate\Validation\ValidationException::withMessages([ + 'email' => 'Email, kata sandi salah atau akun sudah dinonaktifkan oleh admin.', + ]); + } + } +} diff --git a/app/Http/Requests/ProfileUpdateRequest.php b/app/Http/Requests/ProfileUpdateRequest.php new file mode 100644 index 0000000..3622a8f --- /dev/null +++ b/app/Http/Requests/ProfileUpdateRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => ['required', 'string', 'max:255'], + 'email' => [ + 'required', + 'string', + 'lowercase', + 'email', + 'max:255', + Rule::unique(User::class)->ignore($this->user()->id), + ], + ]; + } +} diff --git a/app/Models/GajiKaryawan.php b/app/Models/GajiKaryawan.php new file mode 100644 index 0000000..f3f8ac1 --- /dev/null +++ b/app/Models/GajiKaryawan.php @@ -0,0 +1,27 @@ +belongsTo(Karyawan::class); + } +} diff --git a/app/Models/InventoriKandang.php b/app/Models/InventoriKandang.php new file mode 100644 index 0000000..70de8b8 --- /dev/null +++ b/app/Models/InventoriKandang.php @@ -0,0 +1,29 @@ +belongsTo(User::class); + } +} diff --git a/app/Models/Kandang.php b/app/Models/Kandang.php new file mode 100644 index 0000000..0f40bf8 --- /dev/null +++ b/app/Models/Kandang.php @@ -0,0 +1,28 @@ +hasMany(MutasiAyam::class); + } + + public function produksiTelur() + { + return $this->hasMany(ProduksiTelur::class); + } +} diff --git a/app/Models/Karyawan.php b/app/Models/Karyawan.php new file mode 100644 index 0000000..5de7311 --- /dev/null +++ b/app/Models/Karyawan.php @@ -0,0 +1,39 @@ +belongsTo(User::class); + } + + public function gaji() + { + return $this->hasMany(GajiKaryawan::class); + } + public function isAktif() + { + return $this->status_karyawan === 'aktif'; + } +} diff --git a/app/Models/MutasiAyam.php b/app/Models/MutasiAyam.php new file mode 100644 index 0000000..a98eea9 --- /dev/null +++ b/app/Models/MutasiAyam.php @@ -0,0 +1,36 @@ +belongsTo(Kandang::class, 'kandang_id'); + } + + // Relasi ke User + public function user() + { + return $this->belongsTo(User::class, 'user_id'); + } +} diff --git a/app/Models/Penjualan.php b/app/Models/Penjualan.php new file mode 100644 index 0000000..ddb4b90 --- /dev/null +++ b/app/Models/Penjualan.php @@ -0,0 +1,30 @@ +belongsTo(User::class, 'user_id'); + } + + +} diff --git a/app/Models/ProduksiTelur.php b/app/Models/ProduksiTelur.php new file mode 100644 index 0000000..1934b41 --- /dev/null +++ b/app/Models/ProduksiTelur.php @@ -0,0 +1,37 @@ +belongsTo(Kandang::class); + } + + public function user() + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..02d12c6 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,74 @@ + 'datetime', + 'is_active' => 'boolean', + ]; + + /* ========== ROLE CHECK ========== */ + public function isAdmin(): bool + { + return $this->role === 'admin'; + } + + public function isKaryawan(): bool + { + return $this->role === 'karyawan'; + } + + + /* RELASI */ + public function inventoriKandang() + { + return $this->hasMany(InventoriKandang::class); + } + + public function penjualan() + { + return $this->hasMany(Penjualan::class); + } + + public function karyawan() + { + return $this->hasOne(Karyawan::class); + } + + public function mutasiAyam() + { + return $this->hasMany(MutasiAyam::class); + } + + public function produksiTelur() + { + return $this->hasMany(ProduksiTelur::class); + } + public function sendPasswordResetNotification($token) + { + $this->notify(new ResetPasswordNotification($token)); + } +} diff --git a/app/Notifications/ResetPasswordNotification.php b/app/Notifications/ResetPasswordNotification.php new file mode 100644 index 0000000..ea48eaf --- /dev/null +++ b/app/Notifications/ResetPasswordNotification.php @@ -0,0 +1,25 @@ + $this->token, + 'email' => $notifiable->getEmailForPasswordReset(), + ], false)); + + return (new MailMessage) + ->subject('Reset Kata Sandi Akun Anda') + ->greeting('Halo!') + ->line('Anda menerima email ini karena kami menerima permintaan reset kata sandi untuk akun Anda.') + ->action('Reset Kata Sandi', $url) + ->line('Link reset kata sandi ini akan kedaluwarsa dalam 60 menit.') + ->line('Jika Anda tidak merasa meminta reset kata sandi, abaikan email ini.'); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..54107ba --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,29 @@ +getActiveSheet(); + $sheetProduksi->setTitle('Produksi'); + + $sheetProduksi->setCellValue('A1', 'LAPORAN PETERNAKAN AYAM PETELUR PAK HARI'); + $sheetProduksi->setCellValue('A2', 'TAHUN ' . $tahun); + + $sheetProduksi->setCellValue('A4', 'Bulan'); + $sheetProduksi->setCellValue('B4', 'Minggu'); + $sheetProduksi->setCellValue('C4', 'Total Produksi (Kg)'); + + $produksi = DB::table('produksi_telur') + ->selectRaw(' + MONTH(tanggal_produksi) AS bulan, + CEIL(DAY(tanggal_produksi) / 7) AS minggu, + SUM(berat_telur_total) AS total + ') + ->whereYear('tanggal_produksi', $tahun) + ->groupBy('bulan', 'minggu') + ->orderBy('bulan') + ->orderBy('minggu') + ->get(); + + $row = 5; + foreach ($produksi as $item) { + $sheetProduksi->setCellValue( + "A{$row}", + \Carbon\Carbon::createFromDate(null, $item->bulan, 1) + ->locale('id') + ->translatedFormat('F') + ); + $sheetProduksi->setCellValue("B{$row}", 'Minggu ' . $item->minggu); + $sheetProduksi->setCellValue("C{$row}", $item->total); + $row++; + } + + $totalProduksi = $produksi->sum('total'); + $jumlahMinggu = $produksi->count(); + $rataProduksi = $jumlahMinggu > 0 ? $totalProduksi / $jumlahMinggu : 0; + + $sheetProduksi->setCellValue("A{$row}", 'TOTAL PRODUKSI TAHUNAN'); + $sheetProduksi->setCellValue("C{$row}", $totalProduksi); + $row++; + + $sheetProduksi->setCellValue("A{$row}", 'RATA-RATA PRODUKSI MINGGUAN'); + $sheetProduksi->setCellValue("C{$row}", round($rataProduksi, 1)); + $row++; + + $this->autoSize($sheetProduksi); + + /* + | SHEET 2 — INVENTORI (MINGGUAN) + */ + $sheetInventori = $spreadsheet->createSheet(); + $sheetInventori->setTitle('Pakan'); + + $sheetInventori->setCellValue('A1', 'LAPORAN PETERNAKAN AYAM PETELUR PAK HARI'); + $sheetInventori->setCellValue('A2', 'TAHUN ' . $tahun); + + $sheetInventori->setCellValue('A4', 'Bulan'); + $sheetInventori->setCellValue('B4', 'Minggu'); + $sheetInventori->setCellValue('C4', 'Pakan Masuk (Kg)'); + $sheetInventori->setCellValue('D4', 'Pakan Keluar (Kg)'); + + $inventori = DB::table('inventori_kandang') + ->selectRaw(' + MONTH(created_at) AS bulan, + CEIL(DAY(created_at) / 7) AS minggu, + SUM(CASE WHEN jenis_transaksi = "masuk" THEN jumlah ELSE 0 END) AS masuk, + SUM(CASE WHEN jenis_transaksi = "keluar" THEN jumlah ELSE 0 END) AS keluar + ') + ->whereYear('created_at', $tahun) + ->groupBy('bulan', 'minggu') + ->orderBy('bulan') + ->orderBy('minggu') + ->get(); + + $row = 5; + foreach ($inventori as $item) { + $sheetInventori->setCellValue( + "A{$row}", + \Carbon\Carbon::createFromDate(null, $item->bulan, 1) + ->locale('id') + ->translatedFormat('F') + ); + $sheetInventori->setCellValue("B{$row}", 'Minggu ' . $item->minggu); + $sheetInventori->setCellValue("C{$row}", $item->masuk); + $sheetInventori->setCellValue("D{$row}", $item->keluar); + $row++; + } + + $totalMasuk = $inventori->sum('masuk'); + $totalKeluar = $inventori->sum('keluar'); + + $sheetInventori->setCellValue("A{$row}", 'TOTAL MASUK PAKAN TAHUNAN'); + $sheetInventori->setCellValue("C{$row}", $totalMasuk); + $row++; + + $sheetInventori->setCellValue("A{$row}", 'TOTAL KELUAR PAKAN TAHUNAN'); + $sheetInventori->setCellValue("D{$row}", $totalKeluar); + $row++; + + $this->autoSize($sheetInventori); + + /* + | SHEET 3 — KEUANGAN (BULANAN) + */ + $sheetKeuangan = $spreadsheet->createSheet(); + $sheetKeuangan->setTitle('Keuangan'); + + $sheetKeuangan->setCellValue('A1', 'LAPORAN PETERNAKAN AYAM PETELUR PAK HARI'); + $sheetKeuangan->setCellValue('A2', 'TAHUN ' . $tahun); + + $sheetKeuangan->setCellValue('A4', 'Bulan'); + $sheetKeuangan->setCellValue('B4', 'Pemasukan'); + $sheetKeuangan->setCellValue('C4', 'Pembelian Pakan'); + $sheetKeuangan->setCellValue('D4', 'Gaji'); + $sheetKeuangan->setCellValue('E4', 'Laba / Rugi'); + + $pemasukan = DB::table('penjualan') + ->selectRaw(' + MONTH(tanggal_penjualan) AS bulan, + SUM(total_penjualan) AS total + ') + ->whereYear('tanggal_penjualan', $tahun) + ->groupBy('bulan') + ->get() + ->keyBy('bulan'); + + + $inventoriMasuk = DB::table('inventori_kandang') + ->selectRaw('MONTH(created_at) AS bulan, SUM(total_harga) AS total') + ->whereYear('created_at', $tahun) + ->where('jenis_transaksi', 'masuk') + ->groupBy('bulan') + ->get() + ->keyBy('bulan'); + + $gaji = DB::table('gaji_karyawan') + ->selectRaw('bulan, SUM(gaji_pokok) AS total') + ->where('tahun', $tahun) + ->groupBy('bulan') + ->get() + ->keyBy('bulan'); + + $row = 5; + for ($bulan = 1; $bulan <= 12; $bulan++) { + $p = $pemasukan[$bulan]->total ?? 0; + $i = $inventoriMasuk[$bulan]->total ?? 0; + $g = $gaji[$bulan]->total ?? 0; + $laba = $p - ($i + $g); + + $sheetKeuangan->setCellValue( + "A{$row}", + \Carbon\Carbon::createFromDate(null, $bulan, 1) + ->locale('id') + ->translatedFormat('F') + ); + $sheetKeuangan->setCellValue("B{$row}", $p); + $sheetKeuangan->setCellValue("C{$row}", $i); + $sheetKeuangan->setCellValue("D{$row}", $g); + $sheetKeuangan->setCellValue("E{$row}", $laba); + $row++; + } + + $totalPemasukan = $pemasukan->sum('total'); + $totalInventori = $inventoriMasuk->sum('total'); + $totalGaji = $gaji->sum('total'); + $labaTahunan = $totalPemasukan - ($totalInventori + $totalGaji); + + $sheetKeuangan->setCellValue("A{$row}", 'LABA BERSIH TAHUNAN'); + $sheetKeuangan->setCellValue("E{$row}", $labaTahunan); + + $this->autoSize($sheetKeuangan); + + /* + | DOWNLOAD + */ + $filename = "Laporan-Tahunan-{$tahun}.xlsx"; + + return new StreamedResponse(function () use ($spreadsheet) { + $writer = new Xlsx($spreadsheet); + $writer->save('php://output'); + }, 200, [ + 'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'Content-Disposition' => "attachment; filename=\"{$filename}\"", + ]); + } + + private function autoSize($sheet): void + { + foreach (range('A', $sheet->getHighestColumn()) as $col) { + $sheet->getColumnDimension($col)->setAutoSize(true); + } + } +} diff --git a/app/View/Components/AppLayout.php b/app/View/Components/AppLayout.php new file mode 100644 index 0000000..de0d46f --- /dev/null +++ b/app/View/Components/AppLayout.php @@ -0,0 +1,17 @@ +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..c183276 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,18 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware): void { + // + }) + ->withExceptions(function (Exceptions $exceptions): void { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..38b258d --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,5 @@ +=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "composer/pcre", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, + "require-dev": { + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/dbal", + "version": "4.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1.5", + "php": "^8.2", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "14.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.2", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "2.0.7", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "11.5.23", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", + "symfony/cache": "^6.3.8|^7.0|^8.0", + "symfony/console": "^5.4|^6.3|^7.0|^8.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/4.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2025-12-04T10:11:03+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=14" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" + }, + "time": "2026-02-07T07:09:04+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" + }, + "require-dev": { + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2025-12-03T09:33:47+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:43:20+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.10.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-08-23T22:36:01+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "481557b130ef3790cf82b713667b43030dc9c957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:34:08+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "21dc724a0583619cd1652f673303492272778051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-08-23T21:21:41+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:27:06+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.48.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "0f0974a9769378ccd9c9935c09b9927f3a606830" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/0f0974a9769378ccd9c9935c09b9927f3a606830", + "reference": "0f0974a9769378ccd9c9935c09b9927f3a606830", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12|^0.13|^0.14", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.3.0", + "laravel/serializable-closure": "^1.3|^2.0", + "league/commonmark": "^2.7", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", + "symfony/http-foundation": "^7.2.0", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", + "symfony/polyfill-php83": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/polyfill-php85": "^1.33", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/json-schema": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/reflection": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^10.9.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", + "resend/resend-php": "^0.10.0|^1.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", + "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^3.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0|^1.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2026-01-20T16:12:36+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.10", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "360ba095ef9f51017473505191fbd4ab73e1cab3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/360ba095ef9f51017473505191fbd4ab73e1cab3", + "reference": "360ba095ef9f51017473505191fbd4ab73e1cab3", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4|^4.0", + "phpstan/phpstan": "^1.12.28", + "phpstan/phpstan-mockery": "^1.1.3" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.10" + }, + "time": "2026-01-13T20:29:29+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.8", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "7581a4407012f5f53365e11bafc520fd7f36bc9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/7581a4407012f5f53365e11bafc520fd7f36bc9b", + "reference": "7581a4407012f5f53365e11bafc520fd7f36bc9b", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2026-01-08T16:22:46+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.11.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/3d34b97c9a1747a81a3fde90482c092bd8b66468", + "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.11.0" + }, + "time": "2025-12-19T19:16:45+00:00" + }, + { + "name": "league/commonmark", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.9-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2025-11-26T21:48:24+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1717e0b3642b0df65ecb0cc89cdd99fa840672ff", + "reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.31.0" + }, + "time": "2026-01-23T15:38:47+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.31.0" + }, + "time": "2026-01-23T15:30:45+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/uri", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-14T17:24:56+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-15T06:54:53+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.2" + }, + "require-dev": { + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^11.0", + "vimeo/psalm": "^6.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2025-01-27T12:07:53+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + }, + "time": "2022-12-06T16:21:08+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + }, + "time": "2022-12-02T22:17:43+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-01-02T08:56:05+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.11.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "bdb375400dcd162624531666db4799b36b64e4a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1", + "reference": "bdb375400dcd162624531666db4799b36b64e4a1", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^v3.87.1", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2025-12-02T21:04:28+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^2.0@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.3" + }, + "time": "2025-10-30T22:57:59+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.1", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/tester": "^2.5", + "phpstan/phpstan-nette": "^2.0@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.1.1" + }, + "time": "2025-12-22T12:14:32+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.3.3", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.3.6" + }, + "require-dev": { + "illuminate/console": "^11.46.1", + "laravel/pint": "^1.25.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", + "phpstan/phpstan": "^1.12.32", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.3.5", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2025-11-20T02:34:59+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "5.4.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "48f2fe37d64c2dece0ef71fb2ac55497566782af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/48f2fe37d64c2dece0ef71fb2ac55497566782af", + "reference": "48f2fe37d64c2dece0ef71fb2ac55497566782af", + "shasum": "" + }, + "require": { + "composer/pcre": "^1||^2||^3", + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^8.1", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "dompdf/dompdf": "^2.0 || ^3.0", + "ext-intl": "*", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.5", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1 || ^2.0", + "phpstan/phpstan-deprecation-rules": "^1.0 || ^2.0", + "phpstan/phpstan-phpunit": "^1.0 || ^2.0", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.5" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions, required for NumberFormat Wizard and StringHelper::setLocale()", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/5.4.0" + }, + "time": "2026-01-11T04:52:00+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.18", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ddff0ac01beddc251786fe70367cd8bbdb258196", + "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "composer/class-map-generator": "^1.6" + }, + "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.18" + }, + "time": "2025-12-17T14:35:46+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "8429c78ca35a09f27565311b98101e2826affde0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.2" + }, + "time": "2025-12-14T04:43:48+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-12T15:39:26+00:00" + }, + { + "name": "symfony/console", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6", + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-23T14:50:43+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-30T13:39:42+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-05T14:29:59+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-28T09:38:46+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "fffe05569336549b20a1be64250b40516d6e8d06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/fffe05569336549b20a1be64250b40516d6e8d06", + "reference": "fffe05569336549b20a1be64250b40516d6e8d06", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-23T14:50:43+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-23T14:23:49+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "885211d4bed3f857b8c964011923528a55702aa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5", + "reference": "885211d4bed3f857b8c964011923528a55702aa5", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-31T08:43:57+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4", + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-16T08:02:06+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-16T10:14:42+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-08T02:45:35+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f", + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-19T10:00:43+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-19T10:00:43+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.33", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-27T13:27:24+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/7ef27c65d78886f7599fdd5c93d12c9243ecf44d", + "reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5.3|^3.3" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-29T09:31:36+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c", + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-25T11:02:55+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "7e99bebcb3f90d8721890f2963463280848cba92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92", + "reference": "7e99bebcb3f90d8721890f2963463280848cba92", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-18T07:04:31+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:49:13+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "laravel/breeze", + "version": "v2.3.8", + "source": { + "type": "git", + "url": "https://github.com/laravel/breeze.git", + "reference": "1a29c5792818bd4cddf70b5f743a227e02fbcfcd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/breeze/zipball/1a29c5792818bd4cddf70b5f743a227e02fbcfcd", + "reference": "1a29c5792818bd4cddf70b5f743a227e02fbcfcd", + "shasum": "" + }, + "require": { + "illuminate/console": "^11.0|^12.0", + "illuminate/filesystem": "^11.0|^12.0", + "illuminate/support": "^11.0|^12.0", + "illuminate/validation": "^11.0|^12.0", + "php": "^8.2.0", + "symfony/console": "^7.0" + }, + "require-dev": { + "laravel/framework": "^11.0|^12.0", + "orchestra/testbench-core": "^9.0|^10.0", + "phpstan/phpstan": "^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Breeze\\BreezeServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Breeze\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Minimal Laravel authentication scaffolding with Blade and Tailwind.", + "keywords": [ + "auth", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/breeze/issues", + "source": "https://github.com/laravel/breeze" + }, + "time": "2025-07-18T18:49:59+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "49f92285ff5d6fc09816e976a004f8dec6a0ea30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/49f92285ff5d6fc09816e976a004f8dec6a0ea30", + "reference": "49f92285ff5d6fc09816e976a004f8dec6a0ea30", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0", + "illuminate/contracts": "^10.24|^11.0|^12.0", + "illuminate/log": "^10.24|^11.0|^12.0", + "illuminate/process": "^10.24|^11.0|^12.0", + "illuminate/support": "^10.24|^11.0|^12.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.17|^10.8", + "pestphp/pest": "^2.20|^3.0|^4.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2025-11-20T16:29:35+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90", + "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.92.4", + "illuminate/view": "^12.44.0", + "larastan/larastan": "^3.8.1", + "laravel-zero/framework": "^12.0.4", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3.3", + "pestphp/pest": "^3.8.4" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "dev", + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2026-01-05T16:49:17+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.52.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/64ac7d8abb2dbcf2b76e61289451bae79066b0b3", + "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^2.0" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2026-01-01T02:46:03+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.8.3", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.1", + "nunomaduro/termwind": "^2.3.1", + "php": "^8.2.0", + "symfony/console": "^7.3.0" + }, + "conflict": { + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.4.2", + "laravel/framework": "^11.44.2 || ^12.18", + "laravel/pint": "^1.22.1", + "laravel/sail": "^1.43.1", + "laravel/sanctum": "^4.1.1", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.4", + "pestphp/pest": "^3.8.2 || ^4.0.0", + "sebastian/environment": "^7.2.1 || ^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "dev", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2025-11-20T02:55:25+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "11.0.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.1", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.3.1" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.46" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2025-12-24T07:01:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-27T05:02:59+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.5.49", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "4f1750675ba411dd6c2d5fa8a3cca07f6742020e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f1750675ba411dd6c2d5fa8a3cca07f6742020e", + "reference": "4f1750675ba411dd6c2d5fa8a3cca07f6742020e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.12", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.3", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.1", + "sebastian/exporter": "^6.3.2", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.1.3", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.49" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2026-01-24T16:09:28+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-19T07:56:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:26:40+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2025-05-21T11:55:47+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:12:51+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:57:36+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:58:38+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:00:13+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:42:22+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:55:48+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-09T05:16:32+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.4.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-04T18:11:45+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-11-17T20:03:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..423eed5 --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', (string) env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..7d1eb0d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the number of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..b32aead --- /dev/null +++ b/config/cache.php @@ -0,0 +1,117 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", + | "failover", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + 'failover' => [ + 'driver' => 'failover', + 'stores' => [ + 'database', + 'array', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-cache-'), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..df933e7 --- /dev/null +++ b/config/database.php @@ -0,0 +1,183 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + 'busy_timeout' => null, + 'journal_mode' => null, + 'synchronous' => null, + 'transaction_mode' => 'DEFERRED', + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => env('DB_SSLMODE', 'prefer'), + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-database-'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + 'max_retries' => env('REDIS_MAX_RETRIES', 3), + 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'), + 'backoff_base' => env('REDIS_BACKOFF_BASE', 100), + 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + 'max_retries' => env('REDIS_MAX_RETRIES', 3), + 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'), + 'backoff_base' => env('REDIS_BACKOFF_BASE', 100), + 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..37d8fca --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => rtrim(env('APP_URL', 'http://localhost'), '/').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + 'report' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..9e998a4 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,132 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', (string) env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'handler_with' => [ + 'stream' => 'php://stderr', + ], + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..522b284 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,118 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL_SCHEME'), + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + 'retry_after' => 60, + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + 'retry_after' => 60, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..79c2c0a --- /dev/null +++ b/config/queue.php @@ -0,0 +1,129 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", + | "deferred", "background", "failover", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + 'deferred' => [ + 'driver' => 'deferred', + ], + + 'background' => [ + 'driver' => 'background', + ], + + 'failover' => [ + 'driver' => 'failover', + 'connections' => [ + 'database', + 'deferred', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..6a90eb8 --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'key' => env('POSTMARK_API_KEY'), + ], + + 'resend' => [ + 'key' => env('RESEND_API_KEY'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..5b541b7 --- /dev/null +++ b/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => (int) env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug((string) env('APP_NAME', 'laravel')).'-session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain without subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..fc9a502 --- /dev/null +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,32 @@ +id(); + + $table->string('name'); + $table->string('email')->unique(); // WAJIB UNIQUE + $table->timestamp('email_verified_at')->nullable(); + + $table->string('password'); + + $table->enum('role', ['admin', 'karyawan'])->default('karyawan'); + $table->boolean('is_active')->default(true); // kontrol login + + $table->rememberToken(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php new file mode 100644 index 0000000..ed758bd --- /dev/null +++ b/database/migrations/0001_01_01_000001_create_cache_table.php @@ -0,0 +1,35 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration')->index(); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration')->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/database/migrations/0001_01_01_000002_create_jobs_table.php new file mode 100644 index 0000000..425e705 --- /dev/null +++ b/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -0,0 +1,57 @@ +id(); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + + Schema::create('job_batches', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + + Schema::create('failed_jobs', function (Blueprint $table) { + $table->id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + Schema::dropIfExists('job_batches'); + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2026_01_24_224914_create_karyawan_table.php b/database/migrations/2026_01_24_224914_create_karyawan_table.php new file mode 100644 index 0000000..e632162 --- /dev/null +++ b/database/migrations/2026_01_24_224914_create_karyawan_table.php @@ -0,0 +1,32 @@ +id(); // id primary key auto increment + $table->foreignId('user_id')->nullable()->constrained()->onDelete('cascade'); // jika relasi ke user ada + $table->string('nama_karyawan'); + $table->string('no_hp'); + $table->string('alamat')->nullable(); + $table->enum('status_karyawan', ['aktif', 'nonaktif']); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('karyawan'); + } +}; diff --git a/database/migrations/2026_01_24_225149_create_kandang_table.php b/database/migrations/2026_01_24_225149_create_kandang_table.php new file mode 100644 index 0000000..88c822c --- /dev/null +++ b/database/migrations/2026_01_24_225149_create_kandang_table.php @@ -0,0 +1,29 @@ +id(); // id primary key auto increment + $table->string('nama_kandang'); + $table->string('jenis_kandang'); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('kandang'); + } +}; diff --git a/database/migrations/2026_01_24_225312_create_produk_table.php b/database/migrations/2026_01_24_225312_create_produk_table.php new file mode 100644 index 0000000..068103e --- /dev/null +++ b/database/migrations/2026_01_24_225312_create_produk_table.php @@ -0,0 +1,30 @@ +id(); // id primary key auto increment + $table->string('nama_produk'); + $table->string('jenis_produk'); + $table->string('satuan'); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('produk'); + } +}; diff --git a/database/migrations/2026_01_24_225419_create_populasi_ayam_table.php b/database/migrations/2026_01_24_225419_create_populasi_ayam_table.php new file mode 100644 index 0000000..e5ed23d --- /dev/null +++ b/database/migrations/2026_01_24_225419_create_populasi_ayam_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('kandang_id')->constrained('kandang'); // foreign key ke tabel kandang + $table->foreignId('user_id')->nullable()->constrained('users'); // foreign key ke users, nullable + $table->integer('jumlah_ayam'); + $table->date('tanggal'); + $table->text('keterangan')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('populasi_ayam'); + } +}; diff --git a/database/migrations/2026_01_24_225548_create_produksi_telur_table.php b/database/migrations/2026_01_24_225548_create_produksi_telur_table.php new file mode 100644 index 0000000..ae0e51a --- /dev/null +++ b/database/migrations/2026_01_24_225548_create_produksi_telur_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('kandang_id')->constrained('kandang'); // FK ke tabel kandang + $table->foreignId('user_id')->nullable()->constrained('users'); // FK ke users, nullable + $table->enum('shift', ['pagi', 'sore']); + $table->decimal('berat_telur_layak', 8, 2); + $table->decimal('berat_telur_rusak', 8, 2); + $table->decimal('berat_telur_total', 8, 2); + $table->date('tanggal_produksi'); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('produksi_telur'); + } +}; diff --git a/database/migrations/2026_01_24_225718_create_inventori_kandang_table.php b/database/migrations/2026_01_24_225718_create_inventori_kandang_table.php new file mode 100644 index 0000000..0d284be --- /dev/null +++ b/database/migrations/2026_01_24_225718_create_inventori_kandang_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('user_id')->constrained('users'); // FK ke users + $table->string('nama_barang'); + $table->enum('jenis_transaksi', ['masuk', 'keluar']); + $table->decimal('jumlah', 10, 2); + $table->string('satuan'); + $table->decimal('harga_satuan', 12, 2)->nullable(); + $table->decimal('total_harga', 14, 2)->nullable(); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('inventori_kandang'); + } +}; diff --git a/database/migrations/2026_01_24_225918_create_penjualan_table.php b/database/migrations/2026_01_24_225918_create_penjualan_table.php new file mode 100644 index 0000000..9f1f019 --- /dev/null +++ b/database/migrations/2026_01_24_225918_create_penjualan_table.php @@ -0,0 +1,29 @@ +id(); + $table->foreignId('user_id')->constrained('users'); // FK ke users + $table->decimal('total_penjualan', 14, 2); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('penjualan'); + } +}; diff --git a/database/migrations/2026_01_24_230027_create_detail_penjualan_table.php b/database/migrations/2026_01_24_230027_create_detail_penjualan_table.php new file mode 100644 index 0000000..687e658 --- /dev/null +++ b/database/migrations/2026_01_24_230027_create_detail_penjualan_table.php @@ -0,0 +1,31 @@ +id(); + $table->foreignId('penjualan_id')->constrained('penjualan')->cascadeOnDelete(); + $table->foreignId('produk_id')->constrained('produk')->cascadeOnDelete(); + $table->decimal('jumlah', 10, 2); + $table->decimal('harga_satuan', 12, 2); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('detail_penjualan'); + } +}; diff --git a/database/migrations/2026_01_24_230130_create_gaji_karyawan_table.php b/database/migrations/2026_01_24_230130_create_gaji_karyawan_table.php new file mode 100644 index 0000000..91d0b23 --- /dev/null +++ b/database/migrations/2026_01_24_230130_create_gaji_karyawan_table.php @@ -0,0 +1,33 @@ +id(); + $table->foreignId('karyawan_id')->constrained('karyawan')->cascadeOnDelete(); + $table->integer('bulan'); + $table->integer('tahun'); + $table->decimal('gaji_pokok', 12, 2); + $table->date('tanggal_bayar'); + $table->enum('status_bayar', ['dibayar', 'belum']); + $table->timestamps(); // created_at & updated_at + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('gaji_karyawan'); + } +}; diff --git a/database/migrations/2026_01_24_230232_create_password_resets_table.php b/database/migrations/2026_01_24_230232_create_password_resets_table.php new file mode 100644 index 0000000..4f42fe6 --- /dev/null +++ b/database/migrations/2026_01_24_230232_create_password_resets_table.php @@ -0,0 +1,28 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/database/migrations/2026_02_08_143108_update_penjualan_table.php b/database/migrations/2026_02_08_143108_update_penjualan_table.php new file mode 100644 index 0000000..eeef2e9 --- /dev/null +++ b/database/migrations/2026_02_08_143108_update_penjualan_table.php @@ -0,0 +1,45 @@ +decimal('berat_terjual', 8, 2)->after('user_id'); + } + + // harga_satuan belum ada → tambah + if (!Schema::hasColumn('penjualan', 'harga_satuan')) { + $table->decimal('harga_satuan', 12, 2)->after('berat_terjual'); + } + + // total_penjualan sudah ada → lewati + + // tanggal_penjualan baru → gunakan nullable supaya data lama aman + if (!Schema::hasColumn('penjualan', 'tanggal_penjualan')) { + $table->date('tanggal_penjualan')->nullable()->after('total_penjualan'); + } + }); + } + + public function down() + { + Schema::table('penjualan', function (Blueprint $table) { + if (Schema::hasColumn('penjualan', 'berat_terjual')) { + $table->dropColumn('berat_terjual'); + } + if (Schema::hasColumn('penjualan', 'harga_satuan')) { + $table->dropColumn('harga_satuan'); + } + if (Schema::hasColumn('penjualan', 'tanggal_penjualan')) { + $table->dropColumn('tanggal_penjualan'); + } + }); + } +}; diff --git a/database/migrations/2026_02_08_145521_drop_detail_penjualan_table.php b/database/migrations/2026_02_08_145521_drop_detail_penjualan_table.php new file mode 100644 index 0000000..4276dee --- /dev/null +++ b/database/migrations/2026_02_08_145521_drop_detail_penjualan_table.php @@ -0,0 +1,25 @@ +id(); + $table->foreignId('penjualan_id')->constrained()->cascadeOnDelete(); + $table->string('produk_id'); // sesuaikan dengan kolom lama + $table->integer('jumlah'); + $table->decimal('harga_satuan', 12, 2); + $table->timestamps(); + }); + } +}; diff --git a/database/migrations/2026_02_08_150032_drop_produk_table.php b/database/migrations/2026_02_08_150032_drop_produk_table.php new file mode 100644 index 0000000..61a097e --- /dev/null +++ b/database/migrations/2026_02_08_150032_drop_produk_table.php @@ -0,0 +1,32 @@ +id(); // id primary key auto increment + $table->string('nama_produk'); + $table->string('jenis_produk'); + $table->string('satuan'); + $table->timestamps(); // created_at & updated_at + }); + } +}; diff --git a/database/migrations/2026_02_08_151028_drop_populasi_ayam_table.php b/database/migrations/2026_02_08_151028_drop_populasi_ayam_table.php new file mode 100644 index 0000000..a307eb1 --- /dev/null +++ b/database/migrations/2026_02_08_151028_drop_populasi_ayam_table.php @@ -0,0 +1,26 @@ +id(); + $table->foreignId('kandang_id')->constrained('kandang'); + $table->foreignId('user_id')->nullable()->constrained('users'); + $table->integer('jumlah_ayam'); + $table->date('tanggal'); + $table->text('keterangan')->nullable(); + $table->timestamps(); + }); + } +}; diff --git a/database/migrations/2026_02_08_151133_create_mutasi_ayam_table.php b/database/migrations/2026_02_08_151133_create_mutasi_ayam_table.php new file mode 100644 index 0000000..e81db08 --- /dev/null +++ b/database/migrations/2026_02_08_151133_create_mutasi_ayam_table.php @@ -0,0 +1,37 @@ +id(); + + // kolom foreign key ke kandang + $table->unsignedBigInteger('kandang_id'); + $table->foreign('kandang_id')->references('id')->on('kandang')->cascadeOnDelete(); + + // kolom foreign key ke users + $table->unsignedBigInteger('user_id'); + $table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete(); + + // kolom lainnya + $table->enum('jenis_mutasi', ['masuk','keluar','mati','afkir','pindah']); + $table->integer('jumlah'); + $table->date('tanggal'); + $table->text('keterangan')->nullable(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('mutasi_ayam'); + } +}; diff --git a/database/migrations/2026_02_08_152710_update_produksi_telur_types.php b/database/migrations/2026_02_08_152710_update_produksi_telur_types.php new file mode 100644 index 0000000..9a4be04 --- /dev/null +++ b/database/migrations/2026_02_08_152710_update_produksi_telur_types.php @@ -0,0 +1,26 @@ +decimal('berat_telur_layak', 8, 2)->change(); + $table->decimal('berat_telur_rusak', 8, 2)->change(); + $table->decimal('berat_telur_total', 8, 2)->change(); + }); + } + + public function down(): void + { + Schema::table('produksi_telur', function (Blueprint $table) { + $table->integer('berat_telur_layak')->change(); + $table->integer('berat_telur_rusak')->change(); + $table->integer('berat_telur_total')->change(); + }); + } +}; diff --git a/database/migrations/2026_02_13_084221_rename_password_resets_table.php b/database/migrations/2026_02_13_084221_rename_password_resets_table.php new file mode 100644 index 0000000..c880bed --- /dev/null +++ b/database/migrations/2026_02_13_084221_rename_password_resets_table.php @@ -0,0 +1,17 @@ +enum('jenis_produk', ['telur', 'afkir']) + ->after('user_id'); + } + }); + } + + public function down() + { + Schema::table('penjualan', function (Blueprint $table) { + + if (Schema::hasColumn('penjualan', 'jenis_produk')) { + $table->dropColumn('jenis_produk'); + } + }); + } +}; diff --git a/database/migrations/2026_03_11_034650_add_tanggal_to_inventori_kandang_table.php b/database/migrations/2026_03_11_034650_add_tanggal_to_inventori_kandang_table.php new file mode 100644 index 0000000..e8d238d --- /dev/null +++ b/database/migrations/2026_03_11_034650_add_tanggal_to_inventori_kandang_table.php @@ -0,0 +1,30 @@ +date('tanggal') + ->default(now()) + ->after('user_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('inventori_kandang', function (Blueprint $table) { + $table->dropColumn('tanggal'); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..d43ace0 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +call([ + UserSeeder::class, + KandangSeeder::class, + KaryawanSeeder::class, + GajiKaryawanSeeder::class, + InventoriKandangSeeder::class, + MutasiAyamSeeder::class, + ProduksiTelurSeeder::class, + PenjualanSeeder::class, + ]); + } +} diff --git a/database/seeders/GajiKaryawanSeeder.php b/database/seeders/GajiKaryawanSeeder.php new file mode 100644 index 0000000..63945bd --- /dev/null +++ b/database/seeders/GajiKaryawanSeeder.php @@ -0,0 +1,21 @@ + 1, + 'bulan' => 1, + 'tahun' => 2026, + 'gaji_pokok' => 2500000, + 'tanggal_bayar' => '2026-01-31', + 'status_bayar' => 'dibayar' + ]); + } +} diff --git a/database/seeders/InventoriKandangSeeder.php b/database/seeders/InventoriKandangSeeder.php new file mode 100644 index 0000000..d66331e --- /dev/null +++ b/database/seeders/InventoriKandangSeeder.php @@ -0,0 +1,36 @@ + 1, + 'tanggal' => now(), + 'nama_barang' => 'Konsentrat', + 'jenis_transaksi' => 'masuk', + 'jumlah' => 15, + 'satuan' => 'karung', + 'harga_satuan' => 300000, + 'total_harga' => 4500000 + ]); + + // Transaksi Keluar + InventoriKandang::create([ + 'user_id' => 1, + 'tanggal' => now(), + 'nama_barang' => 'Konsentrat', + 'jenis_transaksi' => 'keluar', + 'jumlah' => 5, + 'satuan' => 'karung', + 'harga_satuan' => null, + 'total_harga' => null + ]); + } +} diff --git a/database/seeders/KandangSeeder.php b/database/seeders/KandangSeeder.php new file mode 100644 index 0000000..45fd9f7 --- /dev/null +++ b/database/seeders/KandangSeeder.php @@ -0,0 +1,22 @@ + 'Kandang Pembesaran', + 'jenis_kandang' => 'Pembesaran' + ]); + + Kandang::create([ + 'nama_kandang' => 'Kandang Produksi', + 'jenis_kandang' => 'Produksi' + ]); + } +} diff --git a/database/seeders/KaryawanSeeder.php b/database/seeders/KaryawanSeeder.php new file mode 100644 index 0000000..aa21b17 --- /dev/null +++ b/database/seeders/KaryawanSeeder.php @@ -0,0 +1,28 @@ +first(); + + Karyawan::updateOrCreate( + [ + 'nama_karyawan' => 'Misno' + ], + [ + 'user_id' => $userMisno ? $userMisno->id : null, + 'nama_karyawan' => 'Misno', + 'no_hp' => '085859716566', + 'alamat' => 'Tanjungkalang', + 'status_karyawan' => 'aktif' + ] + ); + } +} diff --git a/database/seeders/MutasiAyamSeeder.php b/database/seeders/MutasiAyamSeeder.php new file mode 100644 index 0000000..21e7b56 --- /dev/null +++ b/database/seeders/MutasiAyamSeeder.php @@ -0,0 +1,21 @@ + 1, + 'user_id' => 1, + 'jenis_mutasi' => 'masuk', + 'jumlah' => 7000, + 'tanggal' => now(), + 'keterangan' => 'DOC baru' + ]); + } +} diff --git a/database/seeders/PenjualanSeeder.php b/database/seeders/PenjualanSeeder.php new file mode 100644 index 0000000..0eb8532 --- /dev/null +++ b/database/seeders/PenjualanSeeder.php @@ -0,0 +1,32 @@ + 1, + 'jenis_produk' => 'telur', + 'berat_terjual' => 50, + 'harga_satuan' => 27500, + 'total_penjualan' => 1375000, + 'tanggal_penjualan' => now() + ]); + + // Penjualan 2 + Penjualan::create([ + 'user_id' => 1, + 'jenis_produk' => 'telur', + 'berat_terjual' => 80, + 'harga_satuan' => 27500, + 'total_penjualan' => 2200000, + 'tanggal_penjualan' => now() + ]); + } +} diff --git a/database/seeders/ProduksiTelurSeeder.php b/database/seeders/ProduksiTelurSeeder.php new file mode 100644 index 0000000..f22ac0c --- /dev/null +++ b/database/seeders/ProduksiTelurSeeder.php @@ -0,0 +1,37 @@ + 2, + 'user_id' => 1, + 'shift' => 'pagi', + 'berat_telur_layak' => 150, + 'berat_telur_rusak' => 0, + 'berat_telur_total' => 150, + 'tanggal_produksi' => now(), + ]); + + // Shift Sore + ProduksiTelur::create([ + 'kandang_id' => 2, + 'user_id' => 1, + 'shift' => 'sore', + 'berat_telur_layak' => 80, + 'berat_telur_rusak' => 0, + 'berat_telur_total' => 80, + 'tanggal_produksi' => now(), + ]); + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..db2f080 --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,41 @@ + 'vrgnina001@gmail.com', + ], + [ + 'name' => 'Mashari', + 'password' => Hash::make('password'), + 'role' => 'admin', + 'is_active' => true, + 'email_verified_at' => now(), + ] + ); + + // USER UNTUK KARYAWAN + User::updateOrCreate( + [ + 'email' => 'ninavirgiana931@gmail.com', + ], + [ + 'name' => 'Misno', + 'password' => Hash::make('password'), + 'role' => 'karyawan', + 'is_active' => true, + 'email_verified_at' => now(), + ] + ); + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1a1e93e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3473 @@ +{ + "name": "layerku", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@tailwindcss/forms": "^0.5.2", + "@tailwindcss/vite": "^4.0.0", + "alpinejs": "^3.4.2", + "autoprefixer": "^10.4.2", + "axios": "^1.11.0", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^2.0.0", + "postcss": "^8.4.31", + "tailwindcss": "^3.1.0", + "vite": "^7.0.7" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", + "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", + "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", + "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", + "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", + "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", + "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", + "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", + "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", + "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", + "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", + "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", + "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", + "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", + "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", + "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", + "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", + "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", + "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", + "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", + "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", + "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", + "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", + "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", + "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", + "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz", + "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/node/node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "tailwindcss": "4.1.18" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@tailwindcss/vite/node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.1.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/alpinejs": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.15.4.tgz", + "integrity": "sha512-lDpOdoVo0bhFjgl310k1qw3kbpUYwM/v0WByvAchsO93bl3o1rrgr0P/ssx3CimwEtNfXbmwKbtHbqTRCTTH9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "~3.1.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", + "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.278", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", + "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-2.1.0.tgz", + "integrity": "sha512-z+ck2BSV6KWtYcoIzk9Y5+p4NEjqM+Y4i8/H+VZRLq0OgNjW2DqyADquwYu5j8qRvaXwzNmfCWl1KrMlV1zpsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.1.0" + }, + "bin": { + "clean-orphaned-assets": "bin/clean.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^7.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", + "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.56.0", + "@rollup/rollup-android-arm64": "4.56.0", + "@rollup/rollup-darwin-arm64": "4.56.0", + "@rollup/rollup-darwin-x64": "4.56.0", + "@rollup/rollup-freebsd-arm64": "4.56.0", + "@rollup/rollup-freebsd-x64": "4.56.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", + "@rollup/rollup-linux-arm-musleabihf": "4.56.0", + "@rollup/rollup-linux-arm64-gnu": "4.56.0", + "@rollup/rollup-linux-arm64-musl": "4.56.0", + "@rollup/rollup-linux-loong64-gnu": "4.56.0", + "@rollup/rollup-linux-loong64-musl": "4.56.0", + "@rollup/rollup-linux-ppc64-gnu": "4.56.0", + "@rollup/rollup-linux-ppc64-musl": "4.56.0", + "@rollup/rollup-linux-riscv64-gnu": "4.56.0", + "@rollup/rollup-linux-riscv64-musl": "4.56.0", + "@rollup/rollup-linux-s390x-gnu": "4.56.0", + "@rollup/rollup-linux-x64-gnu": "4.56.0", + "@rollup/rollup-linux-x64-musl": "4.56.0", + "@rollup/rollup-openbsd-x64": "4.56.0", + "@rollup/rollup-openharmony-arm64": "4.56.0", + "@rollup/rollup-win32-arm64-msvc": "4.56.0", + "@rollup/rollup-win32-ia32-msvc": "4.56.0", + "@rollup/rollup-win32-x64-gnu": "4.56.0", + "@rollup/rollup-win32-x64-msvc": "4.56.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz", + "integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2ea7e1d --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://www.schemastore.org/package.json", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.2", + "@tailwindcss/vite": "^4.0.0", + "alpinejs": "^3.4.2", + "autoprefixer": "^10.4.2", + "axios": "^1.11.0", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^2.0.0", + "postcss": "^8.4.31", + "tailwindcss": "^3.1.0", + "vite": "^7.0.7" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..d703241 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,35 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + + + diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..49c0612 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/assets/css/auth.css b/public/assets/css/auth.css new file mode 100644 index 0000000..4092607 --- /dev/null +++ b/public/assets/css/auth.css @@ -0,0 +1,146 @@ +/* ========================================= + AUTH CLEAN MODERN STYLE +========================================= */ +body { + overflow-x: hidden; +} +html { + overflow-x: hidden; +} +html, +body { + height: 100%; + margin: 0; +} + +body.auth-page { + display: flex; + align-items: center; + justify-content: center; + min-height: 100vh; + background: linear-gradient(135deg, #f1f5f9, #e2e8f0); + padding: 24px; +} + +/* ===== WRAPPER ===== */ +.auth-wrapper { + width: 100%; + display: flex; + justify-content: center; +} +/* ===== CARD ===== */ +.auth-card { + background: #ffffff; + padding: 40px; + border-radius: 20px; + box-shadow: 0 25px 50px rgba(0, 0, 0, 0.08); + width: 100%; + max-width: 420px; + transition: all 0.3s ease; +} + +/* Hover subtle modern */ +.auth-card:hover { + transform: translateY(-2px); +} + +/* ===== IMAGE ===== */ +.auth-card img { + max-width: 75%; +} + +/* ===== TITLE ===== */ +.auth-card h4 { + font-weight: 600; + color: #1e293b; + font-size: 20px; +} + +.auth-card .text-muted { + font-size: 13px; + color: #64748b; +} + +/* ===== INPUT ===== */ +.form-label { + font-size: 13px; + font-weight: 500; + color: #374151; +} + +.form-control { + border-radius: 12px; + font-size: 14px; + padding: 10px 14px; + border: 1px solid #e2e8f0; + transition: all 0.2s ease; +} + +.form-control:focus { + border-color: #2563EB; + box-shadow: 0 0 0 0.15rem rgba(37, 99, 235, 0.2); +} + +/* ===== CHECKBOX ===== */ +.form-check-input { + cursor: pointer; +} + +.form-check-label { + font-size: 13px; +} + +/* ===== BUTTON ===== */ +.btn { + border-radius: 12px; + font-weight: 500; + padding: 10px; + font-size: 14px; +} + +.btn-primary { + background-color: #2563EB; + border-color: #2563EB; + box-shadow: 0 6px 18px rgba(37, 99, 235, 0.25); + transition: all 0.2s ease; +} + +.btn-primary:hover { + background-color: #1E4ED8; + border-color: #1E4ED8; + transform: translateY(-1px); +} + +/* ===== LINK ===== */ +a { + color: #2563EB; + font-size: 13px; +} + +a:hover { + color: #1E40AF; +} + +/* ========================================= + RESPONSIVE MOBILE +========================================= */ + +@media (max-width: 576px) { + body.auth-page { + align-items: center; + padding-top: 0; + } + + .auth-card { + padding: 25px; + border-radius: 16px; + } + + .auth-card img { + max-width: 85%; + } + + .auth-card h4 { + font-size: 18px; + } +} diff --git a/public/assets/css/bootstrap.min.css b/public/assets/css/bootstrap.min.css new file mode 100644 index 0000000..6561b6f --- /dev/null +++ b/public/assets/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-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%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{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}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}dfn{font-style:italic}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:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,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:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}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}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[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}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}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-cancel-button,[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-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;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.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;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%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-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;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-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;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-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;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-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;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-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%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.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:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.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{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;-ms-overflow-style:-ms-autohiding-scrollbar}.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;-ms-overflow-style:-ms-autohiding-scrollbar}.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;-ms-overflow-style:-ms-autohiding-scrollbar}.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;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.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:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.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:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;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{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-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:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.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:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.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 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.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:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.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 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-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 .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.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(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.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(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.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(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.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(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.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(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.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(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.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(248,249,250,.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{box-shadow:0 0 0 .2rem rgba(52,58,64,.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(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;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:#007bff;border-color:#007bff}.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(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;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:#fff;background-color:#6c757d;border-color:#6c757d}.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(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;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:#28a745;border-color:#28a745}.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(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;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:#17a2b8;border-color:#17a2b8}.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(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;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:#212529;background-color:#ffc107;border-color:#ffc107}.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(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;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:#dc3545;border-color:#dc3545}.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(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;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:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.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(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;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:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.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{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;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:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;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{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;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{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;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-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 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-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius: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:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.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{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.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:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' 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(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' 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(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;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:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-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:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-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%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.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{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.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:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.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:rgba(255,255,255,.75)}.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;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' 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:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-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);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;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-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.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{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius: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}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.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;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.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{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.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.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.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,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-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);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.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-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-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:.875rem;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;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-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:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.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) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom: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-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) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left: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-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) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;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) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.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:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.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:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!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 #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!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:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!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-circle{border-radius:50%!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:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;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:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;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:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;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:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;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:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;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:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;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{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-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}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-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{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-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{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-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}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-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{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-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{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-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}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-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{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-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{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-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}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-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{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-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{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-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}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-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{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-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}}.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;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!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-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-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-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-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-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}}.text-justify{text-align:justify!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-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.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 #999;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 #ddd!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/public/assets/css/custom.css b/public/assets/css/custom.css new file mode 100644 index 0000000..f4ad976 --- /dev/null +++ b/public/assets/css/custom.css @@ -0,0 +1,508 @@ +/* ===================================================== + GLOBAL DASHBOARD STYLE (AMAN UNTUK SEMUA HALAMAN) +===================================================== */ +body { + font-family: "Poppins", sans-serif; + font-size: 14px; + font-weight: 500; + background: #f4f6fb; + color: #1f2937; +} + +/* Heading lebih tegas */ +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 600; +} + +/* Text sekunder tetap ringan tapi jelas */ +.text-muted { + font-weight: 400; +} + +/* ===== KONTEN UTAMA ===== */ +.main-panel .content { + padding: 24px; +} + +/* ===== SECTION SPACING ===== */ +.section { + margin-bottom: 28px; +} + +/* ===== CARD BODY LEBIH KONSISTEN ===== */ +.card-body { + padding: 20px 22px; +} + +/* ===== STAT CARD ===== */ +.card .small { + font-size: 12.5px; +} + +/* ===== CARD ===== */ +.card { + border-radius: 14px; + border: none; +} + +.card-body { + padding: 1.25rem 1.5rem; +} + +/* ===== TABLE ===== */ +.table thead th { + background: #f4f6f8; + color: #4a5568; + font-weight: 600; + font-size: 13px; + border-bottom: 1px solid #e5e7eb; + text-transform: uppercase; + letter-spacing: 0.03em; +} + +.table tbody td { + vertical-align: middle; + padding: 14px; + color: #2d3748; +} + +.table tbody tr:hover { + background-color: #fafafa; +} + +/* ===== BADGE ===== */ +.badge-divisi { + background: #edf2f7; + color: #2f855a; + font-weight: 600; + padding: 6px 10px; + border-radius: 20px; + font-size: 12px; +} + +/* ===== BUTTON ===== */ +.btn { + border-radius: 8px; + font-weight: 500; +} + +.btn-action { + width: 36px; + height: 36px; + padding: 0; + display: inline-flex; + align-items: center; + justify-content: center; +} + +/* ===== FILTER ===== */ +.filter-bar select, +.filter-bar button { + height: 38px; + border-radius: 8px; +} + +/* ===== PAGINATION ===== */ +.pagination .page-link { + border-radius: 8px; + margin: 0 3px; + color: #4a5568; +} + +.pagination .active .page-link { + background: #2f855a; + border-color: #2f855a; +} + +/* +/* ===== MODAL CLEAN MODERN ===== */ +.modal-content { + border-radius: 12px; + border: none; + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.12); + animation: modalFade 0.25s ease; +} + +@keyframes modalFade { + from { + transform: translateY(15px); + opacity: 0; + } + + to { + transform: translateY(0); + opacity: 1; + } +} + +/* ===== HEADER ===== */ +.modal-header-clean { + background: #ffffff; + border-bottom: 1px solid #e5e7eb; + padding: 1rem 1.25rem; +} + +.modal-header-clean .modal-title { + font-weight: 600; + color: #1f2937; + font-size: 1rem; +} + +.modal-header-clean .close { + color: #6b7280; + font-size: 1.2rem; +} + +/* ===== BODY ===== */ +.modal-body { + padding: 1.25rem; +} + +.modal-body .form-group { + margin-bottom: 0.85rem; +} + +.modal-body label { + font-size: 0.85rem; + font-weight: 500; + color: #374151; +} + +.modal-body .form-control { + border-radius: 8px; + font-size: 0.9rem; +} + +/* ===== FOOTER ===== */ +.modal-footer { + border-top: 1px solid #e5e7eb; + padding: 0.75rem 1.25rem; +} + +/* ===== ICON ACCENT ===== */ +.modal-title i { + margin-right: 6px; + opacity: 0.7; +} + +/* ===== SIZE CONTROL ===== */ +.modal-md { + max-width: 560px; +} + +.modal-sm { + max-width: 420px; +} + +/* ===== FIX CLOSE BUTTON (ICON X) ===== */ +.modal-header-clean .close { + color: #6b7280; + /* abu gelap (elegan & terlihat) */ + opacity: 1; + font-size: 1.25rem; + line-height: 1; + text-shadow: none; + transition: all 0.2s ease; +} + +.modal-header-clean .close:hover { + color: #111827; + /* lebih gelap saat hover */ + transform: rotate(90deg); + /* efek halus modern */ +} + +/* Hilangkan outline saat fokus */ +.modal-header-clean .close:focus { + outline: none; + box-shadow: none; +} + +/* ===== RESPONSIVE MOBILE ===== */ +@media (max-width: 576px) { + .modal-dialog { + margin: 0.75rem; + } + + .modal-md, + .modal-sm { + max-width: 100%; + } +} + +/* ===== RESPONSIVE ===== */ +@media (max-width: 768px) { + .auth-left { + display: none; + padding-right: 2rem; + } +} + +.auth-right { + padding-left: 2rem; +} + +/* ===== FORCE CHECKBOX TAMPIL (READY DASHBOARD FIX) ===== */ +input[type="checkbox"] { + appearance: auto !important; + -webkit-appearance: checkbox !important; + -moz-appearance: checkbox !important; + opacity: 1 !important; + position: static !important; + width: 16px; + height: 16px; + margin-right: 8px; + cursor: pointer; +} + +/* Sidebar full tinggi layar */ +.sidebar { + height: 100vh; +} + +/* Wrapper sidebar jadi kolom */ +.sidebar-wrapper { + display: flex; + flex-direction: column; + height: 100%; +} + +/* Nav isi penuh tinggi sidebar */ +.sidebar-wrapper .nav { + display: flex; + flex-direction: column; + flex: 1; + /* INI KUNCI UTAMA */ +} + +/* ===== SIDEBAR LOGOUT FIX ===== */ + +/* ===== SIDEBAR LOGOUT (KONSISTEN MENU) ===== */ +.sidebar .nav .nav-item-logout>a { + display: flex; + align-items: center; + padding: 12px 25px; + font-size: 14px; + font-weight: 500; + color: #ff6b6b !important; +} + +/* icon sejajar */ +.sidebar .nav .nav-item-logout i { + font-size: 18px; + margin-right: 15px; + width: 20px; + text-align: center; +} + +/* text sejajar menu lain */ +.sidebar .nav .nav-item-logout p { + margin: 0; + line-height: 1; +} + +/* hover */ +.sidebar .nav .nav-item-logout>a:hover { + background: rgba(255, 107, 107, 0.12); +} + +/* dorong logout ke bawah */ +.nav-item-logout { + margin-top: auto; + border-top: 1px solid rgba(0, 0, 0, 0.08); +} + +/* Logout tetap di bawah */ +.nav-item-logout { + margin-top: auto; + border-top: 1px solid rgba(0, 0, 0, 0.08); +} + +/* Logout dipaksa ke paling bawah */ +/* .nav-item-logout { + margin-top: auto; + border-top: 1px solid rgba(255, 255, 255, 0.15); +} */ + +/* Warna & hover logout */ +/* .nav-item-logout a { + color: #ff6b6b !important; +} */ + +/* .nav-item-logout a:hover { + background: rgba(255, 107, 107, 0.12) !important; +} */ + +/* Logout terdorong ke bawah */ +/* .nav-logout { + margin-top: 20px; + border-top: 1px solid rgba(255, 255, 255, .1); +} */ +/* paksa hamburger selalu tampil */ +/* .logo-header .navbar-toggler { + display: inline-block !important; + opacity: 1 !important; + visibility: visible !important; +} */ +.nav-collapse { + padding-left: 20px; +} + +.nav-collapse .sub-item { + padding-left: 10px; +} + +/*KERAPIAN TABEL*/ +/* .table-fixed { + table-layout: fixed; +} */ + +.table td, +.table th { + white-space: nowrap; + vertical-align: middle; +} + +.table td:nth-child(3) { + /* Nama Barang */ + white-space: normal; +} + +/* ========================================= + FILTER FIX HEIGHT & TEXT +========================================= */ + +#formFilter .form-control { + height: 38px !important; + padding: 6px 12px !important; + font-size: 13px; +} + +#formFilter select.form-control { + height: 38px !important; +} + +#formFilter .btn { + height: 38px; + padding: 0 16px; + display: flex; + align-items: center; + justify-content: center; +} + +/* Biar teks jelas */ +#formFilter .form-control, +#formFilter select { + color: #1f2937 !important; +} + +/* ===== DASHBOARD LOGO FIX ===== */ +.dashboard-logo { + height: 52px; + /* lebih besar & jelas */ + width: auto; + object-fit: contain; +} + +/* Desktop besar */ +@media (min-width: 1200px) { + .dashboard-logo { + height: 56px; + } +} + +/* Mobile */ +@media (max-width: 768px) { + .dashboard-logo { + height: 40px; + } +} +/* .table-standard { + table-layout: fixed; +} */ + /* ============================ + OPERASIONAL PAGE +============================ */ + + @media (min-width: 768px) { + + .operasional-page table { + width: 100%; + } + + .operasional-page th, + .operasional-page td { + vertical-align: middle; + padding: 14px 12px; + } + + .col-no { + width: 5%; + } + + .col-tanggal { + width: 15%; + } + + .col-nama { + width: 25%; + } + + .col-jenis { + width: 10%; + } + + .col-jumlah { + width: 10%; + } + + .col-satuan { + width: 8%; + } + + .col-harga { + width: 12%; + } + + .col-total { + width: 13%; + } + + .col-aksi { + width: 10%; + } + } + + @media (max-width: 767px) { + + .operasional-page th, + .operasional-page td { + font-size: 13px; + padding: 10px; + white-space: nowrap; + } + + .operasional-page .table-responsive { + overflow-x: auto; + } + } + + .operasional-page tbody tr:hover { + background-color: #f8f9fa; + } + .operasional-page table { + border-collapse: separate; + border-spacing: 0; + } + + .operasional-page thead th { + font-size: 13px; + letter-spacing: .5px; + background: #f8f9fb; + } + \ No newline at end of file diff --git a/public/assets/css/demo.css b/public/assets/css/demo.css new file mode 100644 index 0000000..1f13efa --- /dev/null +++ b/public/assets/css/demo.css @@ -0,0 +1,101 @@ +.update-pro{ + margin: 15px 25px;} + +.update-pro button { + padding: 13px 25px; + background: #4d7cfe; + color: #fff; + border-radius: 3px; + justify-content: center; + width: 100%; + border: 0; + cursor: pointer; +} + +.update-pro button:hover { + background: #4d7cfe !important; + color: #fff; + transform: translateY(-2px); + transition: all .2s linear; +} + +.update-pro:hover button:before{ + display: none; +} + +.update-pro button p, .update-pro button i{ + color: #fff !important; + margin-bottom: 0px; +} + +.update-pro button i{ + margin-right: 5px !important; + font-size: 23px; + color: #C3C5CA; + margin-right: 15px; + width: 25px; + text-align: center; + vertical-align: middle; + float: left; +} + +.demo .btn, .demo .progress{ + margin-bottom: 15px !important; +} + +.demo .form-check-label, .demo .form-radio-label{ + margin-right: 15px; +} + +.demo #slider{ + margin-bottom: 15px; +} + +.table-typo tbody > tr > td{ + border-color: #fafafa; +} + +.table-typo tbody > tr > td:first-child{ + min-width: 200px; + vertical-align: bottom; +} + +.table-typo tbody > tr > td:first-child p{ + font-size: 14px; + color: #333; +} + +.demo-icon { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 20px; + padding: 10px; + transition: all .2s; +} + +.demo-icon:hover{ + background-color: #f4f5f8; + border-radius: 3px; +} + +.demo-icon .icon-preview{ + font-size: 1.8rem; + margin-right: 10px; + line-height: 1; + color: #333439; +} + +.demo-icon .icon-class{ + font-weight: 300; + font-size: 13px; + color: #777; +} + +.from-show-notify .form-control{ + margin-bottom: 15px; +} + +.from-show-notify label{ + padding-top: 0.65rem; +} diff --git a/public/assets/css/ready.css b/public/assets/css/ready.css new file mode 100644 index 0000000..b7569a3 --- /dev/null +++ b/public/assets/css/ready.css @@ -0,0 +1,6857 @@ +/*! + + ========================================================= + * Ready Bootstrap Dashboard (Bootstrap 4) + ========================================================= + + * Product Page: http://www.themekita.com/ + * Copyright 2018 Theme Kita (http://www.themekita.com/) + * Licensed under MIT () + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */ +/* Background */ +/* ========================== + GLOBAL STYLES +========================== */ + +/* Efek hover avatar navbar */ +.navbar-nav .nav-link img { + transition: 0.3s; +} + +.navbar-nav .nav-link:hover img { + transform: scale(1.05); + box-shadow: 0 0 8px rgba(0, 0, 0, 0.15); +} + +/* Dropdown menu */ +.dropdown-menu { + border-radius: 12px; + border: none; + min-width: 200px; +} + +.dropdown-menu .dropdown-header { + font-size: 0.85rem; + color: #6c757d; + font-weight: 600; +} + +.dropdown-item { + font-size: 0.9rem; + padding: 10px 15px; + transition: 0.3s; +} + +.dropdown-item:hover { + background-color: #f8f9fa; + border-radius: 8px; +} + +/* Responsif: sembunyikan nama user di layar kecil */ +@media (max-width: 576px) { + .navbar-nav .nav-link span { + display: none; + } +} + +/* ========================== + DASHBOARD & CARD STYLE +========================== */ +.hover-card { + transition: transform 0.2s ease, box-shadow 0.2s ease; + border-radius: 12px; +} + +.hover-card:hover { + transform: translateY(-4px); + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1); +} + +.icon-big { + width: 60px; + height: 60px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 12px; + background: #f5f6fa; +} + +/* ========================== + TABLE & EXPORT SECTION +========================== */ +.card-header h5 { + font-weight: 600; +} + +.export-btn { + margin-left: 5px; +} + +.nav-tabs .nav-link { + font-weight: 600; +} + +.table th { + font-weight: 600; +} + +@media (max-width: 768px) { + .page-title { + font-size: 1.2rem; + } + + .export-btn { + margin-top: 5px; + display: block; + } +} + +/* ========================== + LOGIN PAGE +========================== */ +body.login-page { + font-family: 'Nunito', sans-serif; + background: linear-gradient(135deg, #ffffff, #f9f9f9, #f2f2f2); + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.login-card { + background: #fff; + border-radius: 16px; + box-shadow: 0 6px 25px rgba(0, 0, 0, 0.08); + width: 100%; + max-width: 380px; + padding: 2rem; + position: relative; + animation: fadeInUp 0.8s ease; +} + +.login-card .logo { + font-weight: 700; + font-size: 1.5rem; + color: #333; +} + +.login-card p { + font-size: 0.9rem; + color: #777; +} + +.login-card .form-control { + border-radius: 10px; + padding: 12px; + border: 1px solid #ddd; +} + +.login-card .btn-primary { + border-radius: 10px; + font-weight: 600; + padding: 12px; + transition: 0.3s; + background: #333; + border: none; +} + +.login-card .btn-primary:hover { + background-color: #555; +} + +.login-footer { + font-size: 0.9rem; + margin-top: 15px; +} + +.login-footer a { + color: #333; + text-decoration: none; +} + +.login-footer a:hover { + text-decoration: underline; +} + +@keyframes fadeInUp { + from { + transform: translateY(30px); + opacity: 0; + } + + to { + transform: translateY(0); + opacity: 1; + } +} + + + +.bg-default { + background: #607D8B !important; +} + +.bg-primary { + background: #1D62F0 !important; +} + +.bg-info { + background: #23CCEF !important; +} + +.bg-success { + background: #59d05d !important; +} + +.bg-warning { + background: #fbad4c !important; +} + +.bg-danger { + background: #ff646d !important; +} + +*:focus { + outline: 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +/* Typography */ +body, h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6, p, .navbar, .brand, .btn-simple, .alert, a, .td-name, td, button.close { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: 'nunito', sans-serif; +} + +body { + font-size: 14px; + color: #575962; +} + +h1, .h1 { + font-size: 59px; +} + +h2, .h2 { + font-size: 43px; +} + +h3, .h3 { + font-size: 35px; + margin: 20px 0 10px; +} + +h4, .h4 { + font-size: 28px; + line-height: 30px; +} + +h5, .h5 { + font-size: 25px; + margin-bottom: 15px; +} + +h6, .h6 { + font-size: 18px; + font-weight: 600; +} + +p { + font-size: 15px; + line-height: 1.5; + margin-bottom: .7rem; +} + +h4.page-title { + font-size: 22px; + font-weight: 600; + color: #333333; + line-height: 30px; + margin-bottom: 20px; +} + +.text-primary { + color: #1D62F0 !important; +} +.text-primary:hover { + color: #1D62F0 !important; +} + +.text-info { + color: #23CCEF !important; +} +.text-info:hover { + color: #23CCEF !important; +} + +.text-success { + color: #59d05d !important; +} +.text-success:hover { + color: #59d05d !important; +} + +.text-warning { + color: #fbad4c !important; +} +.text-warning:hover { + color: #fbad4c !important; +} + +.text-danger { + color: #ff646d !important; +} +.text-danger:hover { + color: #ff646d !important; +} + +label { + color: #3f4047 !important; + font-size: 14px !important; +} + +/* Font-weight */ +.fw-light { + font-weight: lighter !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-mediumbold { + font-weight: 500 !important; +} + +.fw-bold { + font-weight: 600 !important; +} + +.fw-extrabold { + font-weight: 800 !important; +} + +.ct-label { + fill: rgba(0, 0, 0, 0.5); + color: rgba(0, 0, 0, 0.5); + font-size: 0.8rem; + line-height: 1; +} + +.ct-chart-line .ct-label, .ct-chart-bar .ct-label { + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +.ct-chart-pie .ct-label, .ct-chart-donut .ct-label { + dominant-baseline: central; +} + +.ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} +.ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} +.ct-label.ct-vertical.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; +} +.ct-label.ct-vertical.ct-end { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; +} +.ct-chart-bar .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; +} +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; +} +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: end; +} + +.ct-grid { + stroke: rgba(0, 0, 0, 0.2); + stroke-width: 1px; + stroke-dasharray: 2px; +} + +.ct-grid-background { + fill: none; +} + +.ct-point { + stroke-width: 7px; + stroke-linecap: round; +} + +.ct-line { + fill: none; + stroke-width: 3px; +} + +.ct-area { + stroke: none; + fill-opacity: 0.1; +} + +.ct-bar { + fill: none; + stroke-width: 10px; +} + +.ct-slice-donut { + fill: none; + stroke-width: 60px; +} + +.ct-series-a .ct-point, .ct-series-a .ct-line, .ct-series-a .ct-bar, .ct-series-a .ct-slice-donut { + stroke: #1D62F0; +} +.ct-series-a .ct-slice-pie, .ct-series-a .ct-slice-donut-solid, .ct-series-a .ct-area { + fill: #1D62F0; +} + +.ct-series-b .ct-point, .ct-series-b .ct-line, .ct-series-b .ct-bar, .ct-series-b .ct-slice-donut { + stroke: #ff646d; +} +.ct-series-b .ct-slice-pie, .ct-series-b .ct-slice-donut-solid, .ct-series-b .ct-area { + fill: #ff646d; +} + +.ct-series-c .ct-point, .ct-series-c .ct-line, .ct-series-c .ct-bar, .ct-series-c .ct-slice-donut { + stroke: #fbad4c; +} +.ct-series-c .ct-slice-pie, .ct-series-c .ct-slice-donut-solid, .ct-series-c .ct-area { + fill: #fbad4c; +} + +.ct-series-d .ct-point, .ct-series-d .ct-line, .ct-series-d .ct-bar, .ct-series-d .ct-slice-donut { + stroke: #9368E9; +} +.ct-series-d .ct-slice-pie, .ct-series-d .ct-slice-donut-solid, .ct-series-d .ct-area { + fill: #9368E9; +} + +.ct-series-e .ct-point, .ct-series-e .ct-line, .ct-series-e .ct-bar, .ct-series-e .ct-slice-donut { + stroke: #87CB16; +} +.ct-series-e .ct-slice-pie, .ct-series-e .ct-slice-donut-solid, .ct-series-e .ct-area { + fill: #87CB16; +} + +.ct-series-f .ct-point, .ct-series-f .ct-line, .ct-series-f .ct-bar, .ct-series-f .ct-slice-donut { + stroke: #59922b; +} +.ct-series-f .ct-slice-pie, .ct-series-f .ct-slice-donut-solid, .ct-series-f .ct-area { + fill: #59922b; +} + +.ct-series-g .ct-point, .ct-series-g .ct-line, .ct-series-g .ct-bar, .ct-series-g .ct-slice-donut { + stroke: #0544d3; +} +.ct-series-g .ct-slice-pie, .ct-series-g .ct-slice-donut-solid, .ct-series-g .ct-area { + fill: #0544d3; +} + +.ct-series-h .ct-point, .ct-series-h .ct-line, .ct-series-h .ct-bar, .ct-series-h .ct-slice-donut { + stroke: #6b0392; +} +.ct-series-h .ct-slice-pie, .ct-series-h .ct-slice-donut-solid, .ct-series-h .ct-area { + fill: #6b0392; +} + +.ct-series-i .ct-point, .ct-series-i .ct-line, .ct-series-i .ct-bar, .ct-series-i .ct-slice-donut { + stroke: #f05b4f; +} +.ct-series-i .ct-slice-pie, .ct-series-i .ct-slice-donut-solid, .ct-series-i .ct-area { + fill: #f05b4f; +} + +.ct-series-j .ct-point, .ct-series-j .ct-line, .ct-series-j .ct-bar, .ct-series-j .ct-slice-donut { + stroke: #dda458; +} +.ct-series-j .ct-slice-pie, .ct-series-j .ct-slice-donut-solid, .ct-series-j .ct-area { + fill: #dda458; +} + +.ct-series-k .ct-point, .ct-series-k .ct-line, .ct-series-k .ct-bar, .ct-series-k .ct-slice-donut { + stroke: #eacf7d; +} +.ct-series-k .ct-slice-pie, .ct-series-k .ct-slice-donut-solid, .ct-series-k .ct-area { + fill: #eacf7d; +} + +.ct-series-l .ct-point, .ct-series-l .ct-line, .ct-series-l .ct-bar, .ct-series-l .ct-slice-donut { + stroke: #86797d; +} +.ct-series-l .ct-slice-pie, .ct-series-l .ct-slice-donut-solid, .ct-series-l .ct-area { + fill: #86797d; +} + +.ct-series-m .ct-point, .ct-series-m .ct-line, .ct-series-m .ct-bar, .ct-series-m .ct-slice-donut { + stroke: #b2c326; +} +.ct-series-m .ct-slice-pie, .ct-series-m .ct-slice-donut-solid, .ct-series-m .ct-area { + fill: #b2c326; +} + +.ct-series-n .ct-point, .ct-series-n .ct-line, .ct-series-n .ct-bar, .ct-series-n .ct-slice-donut { + stroke: #6188e2; +} +.ct-series-n .ct-slice-pie, .ct-series-n .ct-slice-donut-solid, .ct-series-n .ct-area { + fill: #6188e2; +} + +.ct-series-o .ct-point, .ct-series-o .ct-line, .ct-series-o .ct-bar, .ct-series-o .ct-slice-donut { + stroke: #a748ca; +} +.ct-series-o .ct-slice-pie, .ct-series-o .ct-slice-donut-solid, .ct-series-o .ct-area { + fill: #a748ca; +} + +.ct-square { + display: block; + position: relative; + width: 100%; +} +.ct-square:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 100%; +} +.ct-square:after { + content: ""; + display: table; + clear: both; +} +.ct-square > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-second { + display: block; + position: relative; + width: 100%; +} +.ct-minor-second:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 93.75%; +} +.ct-minor-second:after { + content: ""; + display: table; + clear: both; +} +.ct-minor-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-second { + display: block; + position: relative; + width: 100%; +} +.ct-major-second:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 88.8888888889%; +} +.ct-major-second:after { + content: ""; + display: table; + clear: both; +} +.ct-major-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-third { + display: block; + position: relative; + width: 100%; +} +.ct-minor-third:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 83.3333333333%; +} +.ct-minor-third:after { + content: ""; + display: table; + clear: both; +} +.ct-minor-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-third { + display: block; + position: relative; + width: 100%; +} +.ct-major-third:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 80%; +} +.ct-major-third:after { + content: ""; + display: table; + clear: both; +} +.ct-major-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-perfect-fourth { + display: block; + position: relative; + width: 100%; +} +.ct-perfect-fourth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 75%; +} +.ct-perfect-fourth:after { + content: ""; + display: table; + clear: both; +} +.ct-perfect-fourth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-perfect-fifth { + display: block; + position: relative; + width: 100%; +} +.ct-perfect-fifth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 66.6666666667%; +} +.ct-perfect-fifth:after { + content: ""; + display: table; + clear: both; +} +.ct-perfect-fifth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-sixth { + display: block; + position: relative; + width: 100%; +} +.ct-minor-sixth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 62.5%; +} +.ct-minor-sixth:after { + content: ""; + display: table; + clear: both; +} +.ct-minor-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-golden-section { + display: block; + position: relative; + width: 100%; +} +.ct-golden-section:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 61.804697157%; +} +.ct-golden-section:after { + content: ""; + display: table; + clear: both; +} +.ct-golden-section > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-sixth { + display: block; + position: relative; + width: 100%; +} +.ct-major-sixth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 60%; +} +.ct-major-sixth:after { + content: ""; + display: table; + clear: both; +} +.ct-major-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-seventh { + display: block; + position: relative; + width: 100%; +} +.ct-minor-seventh:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 56.25%; +} +.ct-minor-seventh:after { + content: ""; + display: table; + clear: both; +} +.ct-minor-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-seventh { + display: block; + position: relative; + width: 100%; +} +.ct-major-seventh:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 53.3333333333%; +} +.ct-major-seventh:after { + content: ""; + display: table; + clear: both; +} +.ct-major-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-octave { + display: block; + position: relative; + width: 100%; +} +.ct-octave:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 50%; +} +.ct-octave:after { + content: ""; + display: table; + clear: both; +} +.ct-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-tenth { + display: block; + position: relative; + width: 100%; +} +.ct-major-tenth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 40%; +} +.ct-major-tenth:after { + content: ""; + display: table; + clear: both; +} +.ct-major-tenth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-eleventh { + display: block; + position: relative; + width: 100%; +} +.ct-major-eleventh:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 37.5%; +} +.ct-major-eleventh:after { + content: ""; + display: table; + clear: both; +} +.ct-major-eleventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-twelfth { + display: block; + position: relative; + width: 100%; +} +.ct-major-twelfth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 33.3333333333%; +} +.ct-major-twelfth:after { + content: ""; + display: table; + clear: both; +} +.ct-major-twelfth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-double-octave { + display: block; + position: relative; + width: 100%; +} +.ct-double-octave:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 25%; +} +.ct-double-octave:after { + content: ""; + display: table; + clear: both; +} +.ct-double-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.chartist-tooltip { + position: absolute; + display: inline-block; + opacity: 0; + min-width: 3em; + padding: .25em; + background: rgba(0, 0, 0, 0.77); + color: #fff; + font-weight: 600; + text-align: center; + pointer-events: none; + z-index: 1; + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + -o-transition: opacity .2s linear; + transition: opacity .2s linear; +} +.chartist-tooltip:before { + content: ""; + position: absolute; + top: 100%; + left: 50%; + width: 0; + height: 0; + margin-left: -5px; + border: 5px solid transparent; + border-top-color: rgba(0, 0, 0, 0.77); +} + +.chartist-tooltip-value { + font-size: 14px; +} + +.chartist-tooltip.tooltip-show { + opacity: 1; +} + +.ct-area, .ct-line { + pointer-events: none; +} + +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} + +.ui-helper-hidden { + display: none; +} + +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} + +.ui-helper-clearfix:after, .ui-helper-clearfix:before { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} + +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter: Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + +.ui-state-disabled { + cursor: default !important; + pointer-events: none; +} + +.ui-icon { + display: inline-block; + vertical-align: middle; + margin-top: -.25em; + position: relative; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + +.ui-widget-icon-block { + left: 50%; + margin-left: -8px; + display: block; +} + +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ui-resizable { + position: relative; +} + +.ui-resizable-handle { + position: absolute; + font-size: .1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} + +.ui-resizable-autohide .ui-resizable-handle, .ui-resizable-disabled .ui-resizable-handle { + display: none; +} + +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} + +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} + +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} + +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} + +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} + +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} + +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} + +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} + +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} + +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted #000; +} + +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} + +.ui-slider { + position: relative; + text-align: left; + background: #ddd; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1em; + height: 1em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} +.ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .4em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.4em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} + +.ui-slider-handle { + background: #fff; + background: -moz-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(100%, #f7f7f7)); + background: -webkit-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: -o-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: -ms-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: linear-gradient(to bottom, #fff 0, #f7f7f7 100%); + border-radius: 50px; + box-shadow: 0 1px 4px 0 #9191ab !important; +} +.ui-slider-handle:focus { + background: #fff; + background: -moz-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(100%, #f7f7f7)); + background: -webkit-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: -o-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: -ms-linear-gradient(top, #fff 0, #f7f7f7 100%); + background: linear-gradient(to bottom, #fff 0, #f7f7f7 100%); + border-radius: 50px; + box-shadow: 0 1px 4px 0 #9191ab !important; +} + +.scroll-wrapper { + overflow: hidden !important; + padding: 0 !important; + position: relative; +} +.scroll-wrapper > .scroll-content { + border: none !important; + box-sizing: content-box !important; + height: auto; + left: 0; + margin: 0; + max-height: none; + max-width: none !important; + overflow: scroll !important; + padding: 0; + position: relative !important; + top: 0; + width: auto !important; +} +.scroll-wrapper > .scroll-content::-webkit-scrollbar { + height: 0; + width: 0; +} + +.scroll-element { + display: none; + box-sizing: content-box; +} +.scroll-element div { + box-sizing: content-box; +} +.scroll-element.scroll-x.scroll-scrollx_visible, .scroll-element.scroll-y.scroll-scrolly_visible { + display: block; +} +.scroll-element .scroll-arrow, .scroll-element .scroll-bar { + cursor: default; +} + +.scroll-textarea { + border: 1px solid #ccc; + border-top-color: #999; +} +.scroll-textarea > .scroll-content { + overflow: hidden !important; +} +.scroll-textarea > .scroll-content > textarea { + border: none !important; + box-sizing: border-box; + height: 100% !important; + margin: 0; + max-height: none !important; + max-width: none !important; + overflow: scroll !important; + outline: 0; + padding: 2px; + position: relative !important; + top: 0; + width: 100% !important; +} + +.scrollbar-inner > .scroll-element .scroll-element_outer, .scrollbar-outer > .scroll-element .scroll-element_outer { + overflow: hidden; +} + +.scroll-textarea > .scroll-content > textarea::-webkit-scrollbar { + height: 0; + width: 0; +} + +.scrollbar-inner > .scroll-element { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; +} +.scrollbar-inner > .scroll-element div { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-inner > .scroll-element.scroll-x { + bottom: 2px; + height: 8px; + left: 0; + width: 100%; +} +.scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -12px; +} +.scrollbar-inner > .scroll-element.scroll-y { + height: 100%; + right: 2px; + top: 0; + width: 8px; +} +.scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -12px; +} +.scrollbar-inner > .scroll-element .scroll-bar, .scrollbar-inner > .scroll-element .scroll-element_outer, .scrollbar-inner > .scroll-element .scroll-element_track { + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; +} +.scrollbar-inner > .scroll-element .scroll-bar { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + opacity: .4; +} +.scrollbar-inner > .scroll-element .scroll-element_track { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + opacity: .4; + background-color: #e0e0e0; +} +.scrollbar-inner > .scroll-element .scroll-bar { + background-color: #c2c2c2; +} +.scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #919191; +} + +.scrollbar-outer > .scroll-element { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + background-color: #fff; +} +.scrollbar-outer > .scroll-element div { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-outer > .scroll-element.scroll-x { + bottom: 0; + height: 12px; + left: 0; + width: 100%; +} +.scrollbar-outer > .scroll-element.scroll-y { + height: 100%; + right: 0; + top: 0; + width: 12px; +} +.scrollbar-outer > .scroll-element.scroll-x .scroll-element_outer { + height: 8px; + top: 2px; +} +.scrollbar-outer > .scroll-element.scroll-y .scroll-element_outer { + left: 2px; + width: 8px; +} +.scrollbar-outer > .scroll-element .scroll-element_track { + background-color: #eee; +} +.scrollbar-outer > .scroll-element .scroll-bar, .scrollbar-outer > .scroll-element .scroll-element_outer, .scrollbar-outer > .scroll-element .scroll-element_track { + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; +} +.scrollbar-outer > .scroll-element .scroll-bar { + background-color: #d9d9d9; +} +.scrollbar-outer > .scroll-element .scroll-bar:hover { + background-color: #c2c2c2; +} +.scrollbar-outer > .scroll-element.scroll-draggable .scroll-bar { + background-color: #919191; +} +.scrollbar-outer > .scroll-content.scroll-scrolly_visible { + left: -12px; + margin-left: 12px; +} +.scrollbar-outer > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-outer > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -14px; +} +.scrollbar-outer > .scroll-content.scroll-scrollx_visible { + top: -12px; + margin-top: 12px; +} +.scrollbar-outer > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-outer > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -14px; +} +.scrollbar-outer > .scroll-element.scroll-x .scroll-bar { + min-width: 10px; +} +.scrollbar-outer > .scroll-element.scroll-y .scroll-bar { + min-height: 10px; +} + +.scrollbar-macosx > .scroll-element { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; +} +.scrollbar-macosx > .scroll-element div { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-macosx > .scroll-element .scroll-element_track { + display: none; +} +.scrollbar-macosx > .scroll-element .scroll-bar { + background-color: #6C6E71; + display: block; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + -o-transition: opacity .2s linear; + -ms-transition: opacity .2s linear; + transition: opacity .2s linear; +} +.scrollbar-macosx:hover > .scroll-element .scroll-bar { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70); + opacity: .7; +} +.scrollbar-macosx > .scroll-element.scroll-draggable .scroll-bar { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70); + opacity: .7; +} +.scrollbar-macosx > .scroll-element.scroll-x { + bottom: 0; + height: 0; + left: 0; + min-width: 100%; + overflow: visible; + width: 100%; +} +.scrollbar-macosx > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 0; + top: 0; + width: 0; +} +.scrollbar-macosx > .scroll-element.scroll-x .scroll-bar { + height: 7px; + min-width: 10px; + top: -9px; +} +.scrollbar-macosx > .scroll-element.scroll-y .scroll-bar { + left: -9px; + min-height: 10px; + width: 7px; +} +.scrollbar-macosx > .scroll-element.scroll-x .scroll-element_outer { + left: 2px; +} +.scrollbar-macosx > .scroll-element.scroll-x .scroll-element_size { + left: -4px; +} +.scrollbar-macosx > .scroll-element.scroll-y .scroll-element_outer { + top: 2px; +} +.scrollbar-macosx > .scroll-element.scroll-y .scroll-element_size { + top: -4px; +} +.scrollbar-macosx > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size { + left: -11px; +} +.scrollbar-macosx > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size { + top: -11px; +} + +.scrollbar-light > .scroll-element { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + background-color: #fff; +} +.scrollbar-light > .scroll-element div { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-light > .scroll-element .scroll-element_outer { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} +.scrollbar-light > .scroll-element .scroll-element_size { + background: -moz-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: -webkit-gradient(linear, left top, right top, color-stop(0, #dbdbdb), color-stop(100%, #e8e8e8)); + background: -webkit-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: -o-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: -ms-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: linear-gradient(to right, #dbdbdb 0, #e8e8e8 100%); + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} +.scrollbar-light > .scroll-element.scroll-x { + bottom: 0; + height: 17px; + left: 0; + min-width: 100%; + width: 100%; +} +.scrollbar-light > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 0; + top: 0; + width: 17px; +} +.scrollbar-light > .scroll-element .scroll-bar { + background: -moz-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: -webkit-gradient(linear, left top, right top, color-stop(0, #fefefe), color-stop(100%, #f5f5f5)); + background: -webkit-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: -o-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: -ms-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: linear-gradient(to right, #fefefe 0, #f5f5f5 100%); + border: 1px solid #dbdbdb; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} +.scrollbar-light > .scroll-content.scroll-scrolly_visible { + left: -17px; + margin-left: 17px; +} +.scrollbar-light > .scroll-content.scroll-scrollx_visible { + top: -17px; + margin-top: 17px; +} +.scrollbar-light > .scroll-element.scroll-x .scroll-bar { + height: 10px; + min-width: 10px; + top: 0; +} +.scrollbar-light > .scroll-element.scroll-y .scroll-bar { + left: 0; + min-height: 10px; + width: 10px; +} +.scrollbar-light > .scroll-element.scroll-x .scroll-element_outer { + height: 12px; + left: 2px; + top: 2px; +} +.scrollbar-light > .scroll-element.scroll-x .scroll-element_size { + left: -4px; +} +.scrollbar-light > .scroll-element.scroll-y .scroll-element_outer { + left: 2px; + top: 2px; + width: 12px; +} +.scrollbar-light > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-light > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -19px; +} +.scrollbar-light > .scroll-element.scroll-y .scroll-element_size { + top: -4px; +} +.scrollbar-light > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-light > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -19px; +} + +.scrollbar-rail > .scroll-element { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + background-color: #fff; +} +.scrollbar-rail > .scroll-element div { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-rail > .scroll-element .scroll-element_size { + background-color: #999; + background-color: rgba(0, 0, 0, 0.3); +} +.scrollbar-rail > .scroll-element .scroll-element_outer:hover .scroll-element_size { + background-color: #666; + background-color: rgba(0, 0, 0, 0.5); +} +.scrollbar-rail > .scroll-element.scroll-x { + bottom: 0; + height: 12px; + left: 0; + min-width: 100%; + padding: 3px 0 2px; + width: 100%; +} +.scrollbar-rail > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + padding: 0 2px 0 3px; + right: 0; + top: 0; + width: 12px; +} +.scrollbar-rail > .scroll-element .scroll-bar { + background-color: #d0b9a0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5); +} +.scrollbar-rail > .scroll-element .scroll-element_outer:hover .scroll-bar { + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.6); +} +.scrollbar-rail > .scroll-content.scroll-scrolly_visible { + left: -17px; + margin-left: 17px; +} +.scrollbar-rail > .scroll-content.scroll-scrollx_visible { + margin-top: 17px; + top: -17px; +} +.scrollbar-rail > .scroll-element.scroll-x .scroll-bar { + height: 10px; + min-width: 10px; + top: 1px; +} +.scrollbar-rail > .scroll-element.scroll-y .scroll-bar { + left: 1px; + min-height: 10px; + width: 10px; +} +.scrollbar-rail > .scroll-element.scroll-x .scroll-element_outer { + height: 15px; + left: 5px; +} +.scrollbar-rail > .scroll-element.scroll-x .scroll-element_size { + height: 2px; + left: -10px; + top: 5px; +} +.scrollbar-rail > .scroll-element.scroll-y .scroll-element_outer { + top: 5px; + width: 15px; +} +.scrollbar-rail > .scroll-element.scroll-y .scroll-element_size { + left: 5px; + top: -10px; + width: 2px; +} +.scrollbar-rail > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-rail > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -25px; +} +.scrollbar-rail > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-rail > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -25px; +} + +.scrollbar-dynamic > .scroll-element { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; +} +.scrollbar-dynamic > .scroll-element div { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-dynamic > .scroll-element.scroll-x { + bottom: 2px; + height: 7px; + left: 0; + min-width: 100%; + width: 100%; +} +.scrollbar-dynamic > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 2px; + top: 0; + width: 7px; +} +.scrollbar-dynamic > .scroll-element .scroll-element_outer { + opacity: .3; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; +} +.scrollbar-dynamic > .scroll-element .scroll-element_size { + background-color: #ccc; + opacity: 0; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + -webkit-transition: opacity .2s; + -moz-transition: opacity .2s; + -o-transition: opacity .2s; + -ms-transition: opacity .2s; + transition: opacity .2s; +} +.scrollbar-dynamic > .scroll-element .scroll-bar { + background-color: #6c6e71; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} +.scrollbar-dynamic > .scroll-element.scroll-x .scroll-bar { + bottom: 0; + height: 7px; + min-width: 24px; + top: auto; +} +.scrollbar-dynamic > .scroll-element.scroll-y .scroll-bar { + left: auto; + min-height: 24px; + right: 0; + width: 7px; +} +.scrollbar-dynamic > .scroll-element.scroll-x .scroll-element_outer { + bottom: 0; + top: auto; + left: 2px; + -webkit-transition: height .2s; + -moz-transition: height .2s; + -o-transition: height .2s; + -ms-transition: height .2s; + transition: height .2s; +} +.scrollbar-dynamic > .scroll-element.scroll-y .scroll-element_outer { + left: auto; + right: 0; + top: 2px; + -webkit-transition: width .2s; + -moz-transition: width .2s; + -o-transition: width .2s; + -ms-transition: width .2s; + transition: width .2s; +} +.scrollbar-dynamic > .scroll-element.scroll-x .scroll-element_size { + left: -4px; +} +.scrollbar-dynamic > .scroll-element.scroll-y .scroll-element_size { + top: -4px; +} +.scrollbar-dynamic > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size { + left: -11px; +} +.scrollbar-dynamic > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size { + top: -11px; +} +.scrollbar-dynamic > .scroll-element.scroll-draggable .scroll-element_outer, .scrollbar-dynamic > .scroll-element:hover .scroll-element_outer { + overflow: hidden; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70); + opacity: .7; +} +.scrollbar-dynamic > .scroll-element.scroll-draggable .scroll-element_outer .scroll-element_size, .scrollbar-dynamic > .scroll-element:hover .scroll-element_outer .scroll-element_size { + opacity: 1; +} +.scrollbar-dynamic > .scroll-element.scroll-draggable .scroll-element_outer .scroll-bar, .scrollbar-dynamic > .scroll-element:hover .scroll-element_outer .scroll-bar { + height: 100%; + width: 100%; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; +} +.scrollbar-dynamic > .scroll-element.scroll-x.scroll-draggable .scroll-element_outer, .scrollbar-dynamic > .scroll-element.scroll-x:hover .scroll-element_outer { + height: 20px; + min-height: 7px; +} +.scrollbar-dynamic > .scroll-element.scroll-y.scroll-draggable .scroll-element_outer, .scrollbar-dynamic > .scroll-element.scroll-y:hover .scroll-element_outer { + min-width: 7px; + width: 20px; +} + +.scrollbar-chrome > .scroll-element { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + background-color: #fff; +} +.scrollbar-chrome > .scroll-element div { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; +} +.scrollbar-chrome > .scroll-element .scroll-element_track { + background: #f1f1f1; + border: 1px solid #dbdbdb; +} +.scrollbar-chrome > .scroll-element.scroll-x { + bottom: 0; + height: 16px; + left: 0; + min-width: 100%; + width: 100%; +} +.scrollbar-chrome > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 0; + top: 0; + width: 16px; +} +.scrollbar-chrome > .scroll-element .scroll-bar { + background-color: #d9d9d9; + border: 1px solid #bdbdbd; + cursor: default; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.scrollbar-chrome > .scroll-element .scroll-bar:hover { + background-color: #c2c2c2; + border-color: #a9a9a9; +} +.scrollbar-chrome > .scroll-element.scroll-draggable .scroll-bar { + background-color: #919191; + border-color: #7e7e7e; +} +.scrollbar-chrome > .scroll-content.scroll-scrolly_visible { + left: -16px; + margin-left: 16px; +} +.scrollbar-chrome > .scroll-content.scroll-scrollx_visible { + top: -16px; + margin-top: 16px; +} +.scrollbar-chrome > .scroll-element.scroll-x .scroll-bar { + height: 8px; + min-width: 10px; + top: 3px; +} +.scrollbar-chrome > .scroll-element.scroll-y .scroll-bar { + left: 3px; + min-height: 10px; + width: 8px; +} +.scrollbar-chrome > .scroll-element.scroll-x .scroll-element_outer { + border-left: 1px solid #dbdbdb; +} +.scrollbar-chrome > .scroll-element.scroll-x .scroll-element_track { + height: 14px; + left: -3px; +} +.scrollbar-chrome > .scroll-element.scroll-x .scroll-element_size { + height: 14px; + left: -4px; +} +.scrollbar-chrome > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-chrome > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -19px; +} +.scrollbar-chrome > .scroll-element.scroll-y .scroll-element_outer { + border-top: 1px solid #dbdbdb; +} +.scrollbar-chrome > .scroll-element.scroll-y .scroll-element_track { + top: -3px; + width: 14px; +} +.scrollbar-chrome > .scroll-element.scroll-y .scroll-element_size { + top: -4px; + width: 14px; +} +.scrollbar-chrome > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-chrome > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -19px; +} + +.checkbox label .toggle, .checkbox-inline .toggle { + margin-left: -20px; + margin-right: 5px; +} + +.toggle { + position: relative; + overflow: hidden; +} + +.toggle-group, .toggle-off, .toggle-on { + position: absolute; + top: 0; + bottom: 0; +} + +.toggle input[type=checkbox] { + display: none; +} + +.toggle-group { + width: 200%; + left: 0; + transition: left .35s; + -webkit-transition: left .35s; + -moz-user-select: none; + -webkit-user-select: none; +} + +.toggle.off .toggle-group { + left: -100%; +} + +.toggle-on { + left: 0; + right: 50%; + margin: 0; + border: 0; + border-radius: 0; +} + +.toggle-off { + left: 50%; + right: 0; + margin: 0; + border: 0; + border-radius: 0; +} + +.toggle-handle { + position: relative; + margin: 0 auto; + padding-top: 0; + padding-bottom: 0; + height: 100%; + width: 0; + border-width: 0 1px; +} + +.toggle.btn { + min-width: 59px; + min-height: 34px; +} + +.toggle-on.btn { + padding-right: 24px; +} + +.toggle-off.btn { + padding-left: 24px; +} + +.toggle.btn-lg { + min-width: 79px; + min-height: 45px; +} + +.toggle-on.btn-lg { + padding-right: 31px; +} + +.toggle-off.btn-lg { + padding-left: 31px; +} + +.toggle-handle.btn-lg { + width: 40px; +} + +.toggle.btn-sm { + min-width: 50px; + min-height: 30px; +} + +.toggle-on.btn-sm { + padding-right: 20px; +} + +.toggle-off.btn-sm { + padding-left: 20px; +} + +.toggle.btn-xs { + min-width: 35px; + min-height: 22px; +} + +.toggle-on.btn-xs { + padding-right: 12px; +} + +.toggle-off.btn-xs { + padding-left: 12px; +} + +/* Layouts */ +body { + min-height: 100vh; + position: relative; +} + +.wrapper { + min-height: 100vh; + position: relative; + top: 0; + height: 100vh; +} + +.main-header { + min-height: 55px; + width: 100%; + background: #ffffff; + position: fixed; + z-index: 1001; + border-bottom: 1px solid #eee; +} +.main-header .logo-header { + float: left; + width: 260px; + height: 55px; + line-height: 55px; + border-right: 1px solid #eee; + color: #333333; + z-index: 1001; + font-size: 18px; + font-weight: 600; + padding-left: 25px; + padding-right: 25px; + z-index: 1001; + display: inline-block; +} +.main-header .logo-header a.logo { + color: #575962; +} +.main-header .logo-header .navbar-toggler { + padding-left: 0px; + padding-right: 0px; + opacity: 0; +} +.main-header .logo-header .navbar-toggler .navbar-toggler-icon { + background: url(../img/menu2.png); + background-size: cover; + height: 1em; + width: 1em; + opacity: .8; +} +.main-header .logo-header .more { + background: transparent; + border: 0; + font-size: 26px; + padding: 0; + opacity: 0; +} + +.sidebar { + position: fixed; + top: 0; + bottom: 0; + left: 0; + width: 260px; + display: block; + z-index: 1; + color: #ffffff; + font-weight: 200; + background: #ffffff; + background-size: cover; + background-position: center center; + border-right: 1px solid #eee; + box-shadow: 6px 1px 20px rgba(69, 65, 78, 0.1); +} +.sidebar .user { + margin-top: 12.5px; + padding-left: 25px; + padding-right: 25px; + padding-bottom: 12.5px; + border-bottom: 1px solid #eee; + display: block; +} +.sidebar .user .photo { + width: 40px; + height: 40px; + overflow: hidden; + float: left; + margin-right: 11px; + z-index: 5; + border-radius: 50%; +} +.sidebar .user .photo img { + width: 100%; + height: 100%; +} +.sidebar .user .info a { + white-space: nowrap; + display: block; + position: relative; +} +.sidebar .user .info a:hover, .sidebar .user .info a:focus { + text-decoration: none; +} +.sidebar .user .info a > span { + font-size: 14px; + font-weight: 600; + color: #777; + letter-spacing: 0.04em; + display: flex; + flex-direction: column; +} +.sidebar .user .info a > span .user-level { + color: #555; + font-weight: 700; + font-size: 13px; + letter-spacing: 0.05em; + margin-top: 5px; +} +.sidebar .user .info a .link-collapse { + padding: 7px 0; +} +.sidebar .user .info .caret { + position: absolute; + top: 17px; + right: 0px; + border-top-color: #777; +} +.sidebar .sidebar-wrapper { + position: relative; + max-height: calc(100vh - 75px); + min-height: 100%; + overflow: auto; + width: 260px; + z-index: 4; + padding-top: 55px; + padding-bottom: 100px; +} +.sidebar .nav { + display: block; + float: none; + margin-top: 20px; +} +.sidebar .nav .nav-item { + display: list-item; +} +.sidebar .nav .nav-item.active a { + color: #575962; + font-weight: 700; +} +.sidebar .nav .nav-item.active a:before { + background: #1d7af3; + opacity: 1 !important; + position: absolute; + z-index: 1; + width: 3px; + height: 100%; + content: ''; + left: 0; + top: 0; +} +.sidebar .nav .nav-item.active:hover a:before { + background: #1d7af3; + opacity: 1 !important; + position: absolute; + z-index: 1; + width: 3px; + height: 100%; + content: ''; + left: 0; + top: 0; +} +.sidebar .nav .nav-item.active a i { + color: #4d7cfe; +} +.sidebar .nav .nav-item a { + display: flex; + align-items: center; + color: #83848a; + padding: 13px 25px; + width: 100%; + font-size: 14px; + font-weight: 600; + position: relative; + margin-bottom: 5px; +} +.sidebar .nav .nav-item a:hover, .sidebar .nav .nav-item a:focus { + text-decoration: none; + background: #fbfbfb; +} +.sidebar .nav .nav-item:hover a:before { + background: #1d7af3; + opacity: 0.7; + position: absolute; + z-index: 1; + width: 3px; + height: 100%; + content: ''; + left: 0; + top: 0; +} +.sidebar .nav .nav-item a i { + font-size: 23px; + color: #C3C5CA; + margin-right: 15px; + width: 25px; + text-align: center; + vertical-align: middle; + float: left; +} +.sidebar .nav .nav-item a p { + font-size: 14px; + margin-bottom: 0px; + letter-spacing: .04em; + margin-right: 5px; +} + +.main-panel { + position: relative; + width: calc(100% - 260px); + min-height: 100%; + float: right; + background: #f2f3f8; +} +.main-panel .content { + padding: 30px 15px; + min-height: calc(100% - 123px); + margin-top: 55px; +} + +.footer { + border-top: 1px solid #eee; + padding: 15px; + background: #ffffff; +} + + + +.footer .container-fluid { + display: flex; + align-items: center; +} + +.la, .la-stack { + display: inline-block; +} + +.la-fw, .la-li { + text-align: center; +} + +@font-face { + font-family: LineAwesome; + src: url(../fonts/line-awesome.eot?v=1.1.); + src: url(../fonts/line-awesome.eot??v=1.1.#iefix) format("embedded-opentype"), url(../fonts/line-awesome.woff2?v=1.1.) format("woff2"), url(../fonts/line-awesome.woff?v=1.1.) format("woff"), url(../fonts/line-awesome.ttf?v=1.1.) format("truetype"), url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg"); + font-weight: 400; + font-style: normal; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + @font-face { + font-family: LineAwesome; + src: url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg"); + } +} +.la { + font: normal normal normal 16px/1 LineAwesome; + font-size: inherit; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.la-lg { + font-size: 1.33333333em; + line-height: .75em; + vertical-align: -15%; +} + +.la-2x { + font-size: 2em; +} + +.la-3x { + font-size: 3em; +} + +.la-4x { + font-size: 4em; +} + +.la-5x { + font-size: 5em; +} + +.la-fw { + width: 1.28571429em; +} + +.la-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.la-ul > li { + position: relative; +} + +.la-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: .14285714em; +} +.la-li.la-lg { + left: -1.85714286em; +} + +.la-border { + padding: .2em .25em .15em; + border: .08em solid #eee; + border-radius: .1em; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.li.pull-left { + margin-right: .3em; +} +.li.pull-right { + margin-left: .3em; +} + +.la-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.la-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.la-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.la-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.la-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.la-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} + +:root .la-flip-horizontal, :root .la-flip-vertical, :root .la-rotate-180, :root .la-rotate-270, :root .la-rotate-90 { + filter: none; +} + +.la-stack { + position: relative; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} + +.la-stack-1x, .la-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} + +.la-stack-1x { + line-height: inherit; +} + +.la-stack-2x { + font-size: 2em; +} + +.la-inverse { + color: #fff; +} + +.la-500px:before { + content: "\f100"; +} + +.la-adjust:before { + content: "\f101"; +} + +.la-adn:before { + content: "\f102"; +} + +.la-align-center:before { + content: "\f103"; +} + +.la-align-justify:before { + content: "\f104"; +} + +.la-align-left:before { + content: "\f105"; +} + +.la-align-right:before { + content: "\f106"; +} + +.la-amazon:before { + content: "\f107"; +} + +.la-ambulance:before { + content: "\f108"; +} + +.la-anchor:before { + content: "\f109"; +} + +.la-android:before { + content: "\f10a"; +} + +.la-angellist:before { + content: "\f10b"; +} + +.la-angle-double-down:before { + content: "\f10c"; +} + +.la-angle-double-left:before { + content: "\f10d"; +} + +.la-angle-double-right:before { + content: "\f10e"; +} + +.la-angle-double-up:before { + content: "\f10f"; +} + +.la-angle-down:before { + content: "\f110"; +} + +.la-angle-left:before { + content: "\f111"; +} + +.la-angle-right:before { + content: "\f112"; +} + +.la-angle-up:before { + content: "\f113"; +} + +.la-apple:before { + content: "\f114"; +} + +.la-archive:before { + content: "\f115"; +} + +.la-area-chart:before { + content: "\f116"; +} + +.la-arrow-circle-down:before { + content: "\f117"; +} + +.la-arrow-circle-left:before { + content: "\f118"; +} + +.la-arrow-circle-o-down:before { + content: "\f119"; +} + +.la-arrow-circle-o-left:before { + content: "\f11a"; +} + +.la-arrow-circle-o-right:before { + content: "\f11b"; +} + +.la-arrow-circle-o-up:before { + content: "\f11c"; +} + +.la-arrow-circle-right:before { + content: "\f11d"; +} + +.la-arrow-circle-up:before { + content: "\f11e"; +} + +.la-arrow-down:before { + content: "\f11f"; +} + +.la-arrow-left:before { + content: "\f120"; +} + +.la-arrow-right:before { + content: "\f121"; +} + +.la-arrow-up:before { + content: "\f122"; +} + +.la-arrows:before { + content: "\f123"; +} + +.la-arrows-alt:before { + content: "\f124"; +} + +.la-arrows-h:before { + content: "\f125"; +} + +.la-arrows-v:before { + content: "\f126"; +} + +.la-asterisk:before { + content: "\f127"; +} + +.la-at:before { + content: "\f128"; +} + +.la-automobile:before { + content: "\f129"; +} + +.la-backward:before { + content: "\f12a"; +} + +.la-balance-scale:before { + content: "\f12b"; +} + +.la-ban:before { + content: "\f12c"; +} + +.la-bank:before { + content: "\f12d"; +} + +.la-bar-chart:before { + content: "\f12e"; +} + +.la-bar-chart-o:before { + content: "\f12f"; +} + +.la-barcode:before { + content: "\f130"; +} + +.la-bars:before { + content: "\f131"; +} + +.la-battery-0:before { + content: "\f132"; +} + +.la-battery-1:before { + content: "\f133"; +} + +.la-battery-2:before { + content: "\f134"; +} + +.la-battery-3:before { + content: "\f135"; +} + +.la-battery-4:before { + content: "\f136"; +} + +.la-battery-empty:before { + content: "\f137"; +} + +.la-battery-full:before { + content: "\f138"; +} + +.la-battery-half:before { + content: "\f139"; +} + +.la-battery-quarter:before { + content: "\f13a"; +} + +.la-battery-three-quarters:before { + content: "\f13b"; +} + +.la-bed:before { + content: "\f13c"; +} + +.la-beer:before { + content: "\f13d"; +} + +.la-behance:before { + content: "\f13e"; +} + +.la-behance-square:before { + content: "\f13f"; +} + +.la-bell:before { + content: "\f140"; +} + +.la-bell-o:before { + content: "\f141"; +} + +.la-bell-slash:before { + content: "\f142"; +} + +.la-bell-slash-o:before { + content: "\f143"; +} + +.la-bicycle:before { + content: "\f144"; +} + +.la-binoculars:before { + content: "\f145"; +} + +.la-birthday-cake:before { + content: "\f146"; +} + +.la-bitbucket:before { + content: "\f147"; +} + +.la-bitbucket-square:before { + content: "\f148"; +} + +.la-bitcoin:before { + content: "\f149"; +} + +.la-black-tie:before { + content: "\f14a"; +} + +.la-bold:before { + content: "\f14b"; +} + +.la-bolt:before { + content: "\f14c"; +} + +.la-bomb:before { + content: "\f14d"; +} + +.la-book:before { + content: "\f14e"; +} + +.la-bookmark:before { + content: "\f14f"; +} + +.la-bookmark-o:before { + content: "\f150"; +} + +.la-briefcase:before { + content: "\f151"; +} + +.la-btc:before { + content: "\f152"; +} + +.la-bug:before { + content: "\f153"; +} + +.la-building:before { + content: "\f154"; +} + +.la-building-o:before { + content: "\f155"; +} + +.la-bullhorn:before { + content: "\f156"; +} + +.la-bullseye:before { + content: "\f157"; +} + +.la-bus:before { + content: "\f158"; +} + +.la-buysellads:before { + content: "\f159"; +} + +.la-cab:before { + content: "\f15a"; +} + +.la-calculator:before { + content: "\f15b"; +} + +.la-calendar:before { + content: "\f15c"; +} + +.la-calendar-check-o:before { + content: "\f15d"; +} + +.la-calendar-minus-o:before { + content: "\f15e"; +} + +.la-calendar-o:before { + content: "\f15f"; +} + +.la-calendar-plus-o:before { + content: "\f160"; +} + +.la-calendar-times-o:before { + content: "\f161"; +} + +.la-camera:before { + content: "\f162"; +} + +.la-camera-retro:before { + content: "\f163"; +} + +.la-car:before { + content: "\f164"; +} + +.la-caret-down:before { + content: "\f165"; +} + +.la-caret-left:before { + content: "\f166"; +} + +.la-caret-right:before { + content: "\f167"; +} + +.la-caret-square-o-down:before, .la-toggle-down:before { + content: "\f168"; +} + +.la-caret-square-o-left:before, .la-toggle-left:before { + content: "\f169"; +} + +.la-caret-square-o-right:before, .la-toggle-right:before { + content: "\f16a"; +} + +.la-caret-square-o-up:before, .la-toggle-up:before { + content: "\f16b"; +} + +.la-caret-up:before { + content: "\f16c"; +} + +.la-cart-arrow-down:before { + content: "\f16d"; +} + +.la-cart-plus:before { + content: "\f16e"; +} + +.la-cc:before { + content: "\f16f"; +} + +.la-cc-amex:before { + content: "\f170"; +} + +.la-cc-diners-club:before { + content: "\f171"; +} + +.la-cc-discover:before { + content: "\f172"; +} + +.la-cc-jcb:before { + content: "\f173"; +} + +.la-cc-mastercard:before { + content: "\f174"; +} + +.la-cc-paypal:before { + content: "\f175"; +} + +.la-cc-stripe:before { + content: "\f176"; +} + +.la-cc-visa:before { + content: "\f177"; +} + +.la-certificate:before { + content: "\f178"; +} + +.la-chain:before { + content: "\f179"; +} + +.la-chain-broken:before { + content: "\f17a"; +} + +.la-check:before { + content: "\f17b"; +} + +.la-check-circle:before { + content: "\f17c"; +} + +.la-check-circle-o:before { + content: "\f17d"; +} + +.la-check-square:before { + content: "\f17e"; +} + +.la-check-square-o:before { + content: "\f17f"; +} + +.la-chevron-circle-down:before { + content: "\f180"; +} + +.la-chevron-circle-left:before { + content: "\f181"; +} + +.la-chevron-circle-right:before { + content: "\f182"; +} + +.la-chevron-circle-up:before { + content: "\f183"; +} + +.la-chevron-down:before { + content: "\f184"; +} + +.la-chevron-left:before { + content: "\f185"; +} + +.la-chevron-right:before { + content: "\f186"; +} + +.la-chevron-up:before { + content: "\f187"; +} + +.la-child:before { + content: "\f188"; +} + +.la-chrome:before { + content: "\f189"; +} + +.la-circle:before { + content: "\f18a"; +} + +.la-circle-o:before { + content: "\f18b"; +} + +.la-circle-o-notch:before { + content: "\f18c"; +} + +.la-circle-thin:before { + content: "\f18d"; +} + +.la-clipboard:before { + content: "\f18e"; +} + +.la-clock-o:before { + content: "\f18f"; +} + +.la-clone:before { + content: "\f190"; +} + +.la-close:before { + content: "\f191"; +} + +.la-cloud:before { + content: "\f192"; +} + +.la-cloud-download:before { + content: "\f193"; +} + +.la-cloud-upload:before { + content: "\f194"; +} + +.la-cny:before { + content: "\f195"; +} + +.la-code:before { + content: "\f196"; +} + +.la-code-fork:before { + content: "\f197"; +} + +.la-codepen:before { + content: "\f198"; +} + +.la-coffee:before { + content: "\f199"; +} + +.la-cog:before { + content: "\f19a"; +} + +.la-cogs:before { + content: "\f19b"; +} + +.la-columns:before { + content: "\f19c"; +} + +.la-comment:before { + content: "\f19d"; +} + +.la-comment-o:before { + content: "\f19e"; +} + +.la-commenting:before { + content: "\f19f"; +} + +.la-commenting-o:before { + content: "\f1a0"; +} + +.la-comments:before { + content: "\f1a1"; +} + +.la-comments-o:before { + content: "\f1a2"; +} + +.la-compass:before { + content: "\f1a3"; +} + +.la-compress:before { + content: "\f1a4"; +} + +.la-connectdevelop:before { + content: "\f1a5"; +} + +.la-contao:before { + content: "\f1a6"; +} + +.la-copy:before { + content: "\f1a7"; +} + +.la-copyright:before { + content: "\f1a8"; +} + +.la-creative-commons:before { + content: "\f1a9"; +} + +.la-credit-card:before { + content: "\f1aa"; +} + +.la-crop:before { + content: "\f1ab"; +} + +.la-crosshairs:before { + content: "\f1ac"; +} + +.la-css3:before { + content: "\f1ad"; +} + +.la-cube:before { + content: "\f1ae"; +} + +.la-cubes:before { + content: "\f1af"; +} + +.la-cut:before { + content: "\f1b0"; +} + +.la-cutlery:before { + content: "\f1b1"; +} + +.la-dashboard:before { + content: "\f1b2"; +} + +.la-dashcube:before { + content: "\f1b3"; +} + +.la-database:before { + content: "\f1b4"; +} + +.la-dedent:before { + content: "\f1b5"; +} + +.la-delicious:before { + content: "\f1b6"; +} + +.la-desktop:before { + content: "\f1b7"; +} + +.la-deviantart:before { + content: "\f1b8"; +} + +.la-diamond:before { + content: "\f1b9"; +} + +.la-digg:before { + content: "\f1ba"; +} + +.la-dollar:before { + content: "\f1bb"; +} + +.la-dot-circle-o:before { + content: "\f1bc"; +} + +.la-download:before { + content: "\f1bd"; +} + +.la-dribbble:before { + content: "\f1be"; +} + +.la-dropbox:before { + content: "\f1bf"; +} + +.la-drupal:before { + content: "\f1c0"; +} + +.la-edit:before { + content: "\f1c1"; +} + +.la-eject:before { + content: "\f1c2"; +} + +.la-ellipsis-h:before { + content: "\f1c3"; +} + +.la-ellipsis-v:before { + content: "\f1c4"; +} + +.la-empire:before, .la-ge:before { + content: "\f1c5"; +} + +.la-envelope:before { + content: "\f1c6"; +} + +.la-envelope-o:before { + content: "\f1c7"; +} + +.la-envelope-square:before { + content: "\f1c8"; +} + +.la-eraser:before { + content: "\f1c9"; +} + +.la-eur:before { + content: "\f1ca"; +} + +.la-euro:before { + content: "\f1cb"; +} + +.la-exchange:before { + content: "\f1cc"; +} + +.la-exclamation:before { + content: "\f1cd"; +} + +.la-exclamation-circle:before { + content: "\f1ce"; +} + +.la-exclamation-triangle:before { + content: "\f1cf"; +} + +.la-expand:before { + content: "\f1d0"; +} + +.la-expeditedssl:before { + content: "\f1d1"; +} + +.la-external-link:before { + content: "\f1d2"; +} + +.la-external-link-square:before { + content: "\f1d3"; +} + +.la-eye:before { + content: "\f1d4"; +} + +.la-eye-slash:before { + content: "\f1d5"; +} + +.la-eyedropper:before { + content: "\f1d6"; +} + +.la-facebook-f:before, .la-facebook:before { + content: "\f1d7"; +} + +.la-facebook-official:before { + content: "\f1d8"; +} + +.la-facebook-square:before { + content: "\f1d9"; +} + +.la-fast-backward:before { + content: "\f1da"; +} + +.la-fast-forward:before { + content: "\f1db"; +} + +.la-fax:before { + content: "\f1dc"; +} + +.la-female:before { + content: "\f1dd"; +} + +.la-fighter-jet:before { + content: "\f1de"; +} + +.la-file:before { + content: "\f1df"; +} + +.la-file-archive-o:before { + content: "\f1e0"; +} + +.la-file-audio-o:before { + content: "\f1e1"; +} + +.la-file-code-o:before { + content: "\f1e2"; +} + +.la-file-excel-o:before { + content: "\f1e3"; +} + +.la-file-image-o:before { + content: "\f1e4"; +} + +.la-file-movie-o:before { + content: "\f1e5"; +} + +.la-file-o:before { + content: "\f1e6"; +} + +.la-file-pdf-o:before { + content: "\f1e7"; +} + +.la-file-photo-o:before { + content: "\f1e8"; +} + +.la-file-picture-o:before { + content: "\f1e9"; +} + +.la-file-powerpoint-o:before { + content: "\f1ea"; +} + +.la-file-sound-o:before { + content: "\f1eb"; +} + +.la-file-text:before { + content: "\f1ec"; +} + +.la-file-text-o:before { + content: "\f1ed"; +} + +.la-file-video-o:before { + content: "\f1ee"; +} + +.la-file-word-o:before { + content: "\f1ef"; +} + +.la-file-zip-o:before { + content: "\f1f0"; +} + +.la-files-o:before { + content: "\f1f1"; +} + +.la-film:before { + content: "\f1f2"; +} + +.la-filter:before { + content: "\f1f3"; +} + +.la-fire:before { + content: "\f1f4"; +} + +.la-fire-extinguisher:before { + content: "\f1f5"; +} + +.la-firefox:before { + content: "\f1f6"; +} + +.la-flag:before { + content: "\f1f7"; +} + +.la-flag-checkered:before { + content: "\f1f8"; +} + +.la-flag-o:before { + content: "\f1f9"; +} + +.la-flash:before { + content: "\f1fa"; +} + +.la-flask:before { + content: "\f1fb"; +} + +.la-flickr:before { + content: "\f1fc"; +} + +.la-floppy-o:before { + content: "\f1fd"; +} + +.la-folder:before { + content: "\f1fe"; +} + +.la-folder-o:before { + content: "\f1ff"; +} + +.la-folder-open:before { + content: "\f200"; +} + +.la-folder-open-o:before { + content: "\f201"; +} + +.la-font:before { + content: "\f202"; +} + +.la-fonticons:before { + content: "\f203"; +} + +.la-forumbee:before { + content: "\f204"; +} + +.la-forward:before { + content: "\f205"; +} + +.la-foursquare:before { + content: "\f206"; +} + +.la-frown-o:before { + content: "\f207"; +} + +.la-futbol-o:before, .la-soccer-ball-o:before { + content: "\f208"; +} + +.la-gamepad:before { + content: "\f209"; +} + +.la-gavel:before { + content: "\f20a"; +} + +.la-gbp:before { + content: "\f20b"; +} + +.la-gear:before { + content: "\f20c"; +} + +.la-gears:before { + content: "\f20d"; +} + +.la-genderless:before { + content: "\f20e"; +} + +.la-get-pocket:before { + content: "\f20f"; +} + +.la-gg:before { + content: "\f210"; +} + +.la-gg-circle:before { + content: "\f211"; +} + +.la-gift:before { + content: "\f212"; +} + +.la-git:before { + content: "\f213"; +} + +.la-git-square:before { + content: "\f214"; +} + +.la-github:before { + content: "\f215"; +} + +.la-github-alt:before { + content: "\f216"; +} + +.la-github-square:before { + content: "\f217"; +} + +.la-glass:before { + content: "\f218"; +} + +.la-globe:before { + content: "\f219"; +} + +.la-google:before { + content: "\f21a"; +} + +.la-google-plus:before { + content: "\f21b"; +} + +.la-google-plus-square:before { + content: "\f21c"; +} + +.la-google-wallet:before { + content: "\f21d"; +} + +.la-graduation-cap:before { + content: "\f21e"; +} + +.la-gittip:before, .la-gratipay:before { + content: "\f21f"; +} + +.la-group:before { + content: "\f220"; +} + +.la-h-square:before { + content: "\f221"; +} + +.la-hacker-news:before { + content: "\f222"; +} + +.la-hand-grab-o:before { + content: "\f223"; +} + +.la-hand-lizard-o:before { + content: "\f224"; +} + +.la-hand-o-down:before { + content: "\f225"; +} + +.la-hand-o-left:before { + content: "\f226"; +} + +.la-hand-o-right:before { + content: "\f227"; +} + +.la-hand-o-up:before { + content: "\f228"; +} + +.la-hand-paper-o:before { + content: "\f229"; +} + +.la-hand-peace-o:before { + content: "\f22a"; +} + +.la-hand-pointer-o:before { + content: "\f22b"; +} + +.la-hand-rock-o:before { + content: "\f22c"; +} + +.la-hand-scissors-o:before { + content: "\f22d"; +} + +.la-hand-spock-o:before { + content: "\f22e"; +} + +.la-hand-stop-o:before { + content: "\f22f"; +} + +.la-hdd-o:before { + content: "\f230"; +} + +.la-header:before { + content: "\f231"; +} + +.la-headphones:before { + content: "\f232"; +} + +.la-heart:before { + content: "\f233"; +} + +.la-heart-o:before { + content: "\f234"; +} + +.la-heartbeat:before { + content: "\f235"; +} + +.la-history:before { + content: "\f236"; +} + +.la-home:before { + content: "\f237"; +} + +.la-hospital-o:before { + content: "\f238"; +} + +.la-hotel:before { + content: "\f239"; +} + +.la-hourglass:before { + content: "\f23a"; +} + +.la-hourglass-1:before { + content: "\f23b"; +} + +.la-hourglass-2:before { + content: "\f23c"; +} + +.la-hourglass-3:before { + content: "\f23d"; +} + +.la-hourglass-end:before { + content: "\f23e"; +} + +.la-hourglass-half:before { + content: "\f23f"; +} + +.la-hourglass-o:before { + content: "\f240"; +} + +.la-hourglass-start:before { + content: "\f241"; +} + +.la-houzz:before { + content: "\f242"; +} + +.la-html5:before { + content: "\f243"; +} + +.la-i-cursor:before { + content: "\f244"; +} + +.la-ils:before { + content: "\f245"; +} + +.la-image:before { + content: "\f246"; +} + +.la-inbox:before { + content: "\f247"; +} + +.la-indent:before { + content: "\f248"; +} + +.la-industry:before { + content: "\f249"; +} + +.la-info:before { + content: "\f24a"; +} + +.la-info-circle:before { + content: "\f24b"; +} + +.la-inr:before { + content: "\f24c"; +} + +.la-instagram:before { + content: "\f24d"; +} + +.la-institution:before { + content: "\f24e"; +} + +.la-internet-explorer:before { + content: "\f24f"; +} + +.la-ioxhost:before { + content: "\f250"; +} + +.la-italic:before { + content: "\f251"; +} + +.la-joomla:before { + content: "\f252"; +} + +.la-jpy:before { + content: "\f253"; +} + +.la-jsfiddle:before { + content: "\f254"; +} + +.la-key:before { + content: "\f255"; +} + +.la-keyboard-o:before { + content: "\f256"; +} + +.la-krw:before { + content: "\f257"; +} + +.la-language:before { + content: "\f258"; +} + +.la-laptop:before { + content: "\f259"; +} + +.la-lastfm:before { + content: "\f25a"; +} + +.la-lastfm-square:before { + content: "\f25b"; +} + +.la-leaf:before { + content: "\f25c"; +} + +.la-leanpub:before { + content: "\f25d"; +} + +.la-legal:before { + content: "\f25e"; +} + +.la-lemon-o:before { + content: "\f25f"; +} + +.la-level-down:before { + content: "\f260"; +} + +.la-level-up:before { + content: "\f261"; +} + +.la-life-bouy:before { + content: "\f262"; +} + +.la-life-buoy:before { + content: "\f263"; +} + +.la-life-ring:before, .la-support:before { + content: "\f264"; +} + +.la-life-saver:before { + content: "\f265"; +} + +.la-lightbulb-o:before { + content: "\f266"; +} + +.la-line-chart:before { + content: "\f267"; +} + +.la-link:before { + content: "\f268"; +} + +.la-linkedin:before { + content: "\f269"; +} + +.la-linkedin-square:before { + content: "\f26a"; +} + +.la-linux:before { + content: "\f26b"; +} + +.la-list:before { + content: "\f26c"; +} + +.la-list-alt:before { + content: "\f26d"; +} + +.la-list-ol:before { + content: "\f26e"; +} + +.la-list-ul:before { + content: "\f26f"; +} + +.la-location-arrow:before { + content: "\f270"; +} + +.la-lock:before { + content: "\f271"; +} + +.la-long-arrow-down:before { + content: "\f272"; +} + +.la-long-arrow-left:before { + content: "\f273"; +} + +.la-long-arrow-right:before { + content: "\f274"; +} + +.la-long-arrow-up:before { + content: "\f275"; +} + +.la-magic:before { + content: "\f276"; +} + +.la-magnet:before { + content: "\f277"; +} + +.la-mail-forward:before { + content: "\f278"; +} + +.la-mail-reply:before { + content: "\f279"; +} + +.la-mail-reply-all:before { + content: "\f27a"; +} + +.la-male:before { + content: "\f27b"; +} + +.la-map:before { + content: "\f27c"; +} + +.la-map-marker:before { + content: "\f27d"; +} + +.la-map-o:before { + content: "\f27e"; +} + +.la-map-pin:before { + content: "\f27f"; +} + +.la-map-signs:before { + content: "\f280"; +} + +.la-mars:before { + content: "\f281"; +} + +.la-mars-double:before { + content: "\f282"; +} + +.la-mars-stroke:before { + content: "\f283"; +} + +.la-mars-stroke-h:before { + content: "\f284"; +} + +.la-mars-stroke-v:before { + content: "\f285"; +} + +.la-maxcdn:before { + content: "\f286"; +} + +.la-meanpath:before { + content: "\f287"; +} + +.la-medium:before { + content: "\f288"; +} + +.la-medkit:before { + content: "\f289"; +} + +.la-meh-o:before { + content: "\f28a"; +} + +.la-mercury:before { + content: "\f28b"; +} + +.la-microphone:before { + content: "\f28c"; +} + +.la-microphone-slash:before { + content: "\f28d"; +} + +.la-minus:before { + content: "\f28e"; +} + +.la-minus-circle:before { + content: "\f28f"; +} + +.la-minus-square:before { + content: "\f290"; +} + +.la-minus-square-o:before { + content: "\f291"; +} + +.la-mobile:before { + content: "\f292"; +} + +.la-mobile-phone:before { + content: "\f293"; +} + +.la-money:before { + content: "\f294"; +} + +.la-moon-o:before { + content: "\f295"; +} + +.la-mortar-board:before { + content: "\f296"; +} + +.la-motorcycle:before { + content: "\f297"; +} + +.la-mouse-pointer:before { + content: "\f298"; +} + +.la-music:before { + content: "\f299"; +} + +.la-navicon:before { + content: "\f29a"; +} + +.la-neuter:before { + content: "\f29b"; +} + +.la-newspaper-o:before { + content: "\f29c"; +} + +.la-object-group:before { + content: "\f29d"; +} + +.la-object-ungroup:before { + content: "\f29e"; +} + +.la-odnoklassniki:before { + content: "\f29f"; +} + +.la-odnoklassniki-square:before { + content: "\f2a0"; +} + +.la-opencart:before { + content: "\f2a1"; +} + +.la-openid:before { + content: "\f2a2"; +} + +.la-opera:before { + content: "\f2a3"; +} + +.la-optin-monster:before { + content: "\f2a4"; +} + +.la-outdent:before { + content: "\f2a5"; +} + +.la-pagelines:before { + content: "\f2a6"; +} + +.la-paint-brush:before { + content: "\f2a7"; +} + +.la-paper-plane:before, .la-send:before { + content: "\f2a8"; +} + +.la-paper-plane-o:before, .la-send-o:before { + content: "\f2a9"; +} + +.la-paperclip:before { + content: "\f2aa"; +} + +.la-paragraph:before { + content: "\f2ab"; +} + +.la-paste:before { + content: "\f2ac"; +} + +.la-pause:before { + content: "\f2ad"; +} + +.la-paw:before { + content: "\f2ae"; +} + +.la-paypal:before { + content: "\f2af"; +} + +.la-pencil:before { + content: "\f2b0"; +} + +.la-pencil-square:before { + content: "\f2b1"; +} + +.la-pencil-square-o:before { + content: "\f2b2"; +} + +.la-phone:before { + content: "\f2b3"; +} + +.la-phone-square:before { + content: "\f2b4"; +} + +.la-photo:before { + content: "\f2b5"; +} + +.la-picture-o:before { + content: "\f2b6"; +} + +.la-pie-chart:before { + content: "\f2b7"; +} + +.la-pied-piper:before { + content: "\f2b8"; +} + +.la-pied-piper-alt:before { + content: "\f2b9"; +} + +.la-pinterest:before { + content: "\f2ba"; +} + +.la-pinterest-p:before { + content: "\f2bb"; +} + +.la-pinterest-square:before { + content: "\f2bc"; +} + +.la-plane:before { + content: "\f2bd"; +} + +.la-play:before { + content: "\f2be"; +} + +.la-play-circle:before { + content: "\f2bf"; +} + +.la-play-circle-o:before { + content: "\f2c0"; +} + +.la-plug:before { + content: "\f2c1"; +} + +.la-plus:before { + content: "\f2c2"; +} + +.la-plus-circle:before { + content: "\f2c3"; +} + +.la-plus-square:before { + content: "\f2c4"; +} + +.la-plus-square-o:before { + content: "\f2c5"; +} + +.la-power-off:before { + content: "\f2c6"; +} + +.la-print:before { + content: "\f2c7"; +} + +.la-puzzle-piece:before { + content: "\f2c8"; +} + +.la-qq:before { + content: "\f2c9"; +} + +.la-qrcode:before { + content: "\f2ca"; +} + +.la-question:before { + content: "\f2cb"; +} + +.la-question-circle:before { + content: "\f2cc"; +} + +.la-quote-left:before { + content: "\f2cd"; +} + +.la-quote-right:before { + content: "\f2ce"; +} + +.la-ra:before { + content: "\f2cf"; +} + +.la-random:before { + content: "\f2d0"; +} + +.la-rebel:before { + content: "\f2d1"; +} + +.la-recycle:before { + content: "\f2d2"; +} + +.la-reddit:before { + content: "\f2d3"; +} + +.la-reddit-square:before { + content: "\f2d4"; +} + +.la-refresh:before { + content: "\f2d5"; +} + +.la-registered:before { + content: "\f2d6"; +} + +.la-renren:before { + content: "\f2d7"; +} + +.la-reorder:before { + content: "\f2d8"; +} + +.la-repeat:before { + content: "\f2d9"; +} + +.la-reply:before { + content: "\f2da"; +} + +.la-reply-all:before { + content: "\f2db"; +} + +.la-retweet:before { + content: "\f2dc"; +} + +.la-rmb:before { + content: "\f2dd"; +} + +.la-road:before { + content: "\f2de"; +} + +.la-rocket:before { + content: "\f2df"; +} + +.la-rotate-left:before { + content: "\f2e0"; +} + +.la-rotate-right:before { + content: "\f2e1"; +} + +.la-rouble:before { + content: "\f2e2"; +} + +.la-feed:before, .la-rss:before { + content: "\f2e3"; +} + +.la-rss-square:before { + content: "\f2e4"; +} + +.la-rub:before { + content: "\f2e5"; +} + +.la-ruble:before { + content: "\f2e6"; +} + +.la-rupee:before { + content: "\f2e7"; +} + +.la-safari:before { + content: "\f2e8"; +} + +.la-save:before { + content: "\f2e9"; +} + +.la-scissors:before { + content: "\f2ea"; +} + +.la-search:before { + content: "\f2eb"; +} + +.la-search-minus:before { + content: "\f2ec"; +} + +.la-search-plus:before { + content: "\f2ed"; +} + +.la-sellsy:before { + content: "\f2ee"; +} + +.la-server:before { + content: "\f2ef"; +} + +.la-share:before { + content: "\f2f0"; +} + +.la-share-alt:before { + content: "\f2f1"; +} + +.la-share-alt-square:before { + content: "\f2f2"; +} + +.la-share-square:before { + content: "\f2f3"; +} + +.la-share-square-o:before { + content: "\f2f4"; +} + +.la-shekel:before { + content: "\f2f5"; +} + +.la-sheqel:before { + content: "\f2f6"; +} + +.la-shield:before { + content: "\f2f7"; +} + +.la-ship:before { + content: "\f2f8"; +} + +.la-shirtsinbulk:before { + content: "\f2f9"; +} + +.la-shopping-cart:before { + content: "\f2fa"; +} + +.la-sign-in:before { + content: "\f2fb"; +} + +.la-sign-out:before { + content: "\f2fc"; +} + +.la-signal:before { + content: "\f2fd"; +} + +.la-simplybuilt:before { + content: "\f2fe"; +} + +.la-sitemap:before { + content: "\f2ff"; +} + +.la-skyatlas:before { + content: "\f300"; +} + +.la-skype:before { + content: "\f301"; +} + +.la-slack:before { + content: "\f302"; +} + +.la-sliders:before { + content: "\f303"; +} + +.la-slideshare:before { + content: "\f304"; +} + +.la-smile-o:before { + content: "\f305"; +} + +.la-sort:before, .la-unsorted:before { + content: "\f306"; +} + +.la-sort-alpha-asc:before { + content: "\f307"; +} + +.la-sort-alpha-desc:before { + content: "\f308"; +} + +.la-sort-amount-asc:before { + content: "\f309"; +} + +.la-sort-amount-desc:before { + content: "\f30a"; +} + +.la-sort-asc:before, .la-sort-up:before { + content: "\f30b"; +} + +.la-sort-desc:before, .la-sort-down:before { + content: "\f30c"; +} + +.la-sort-numeric-asc:before { + content: "\f30d"; +} + +.la-sort-numeric-desc:before { + content: "\f30e"; +} + +.la-soundcloud:before { + content: "\f30f"; +} + +.la-space-shuttle:before { + content: "\f310"; +} + +.la-spinner:before { + content: "\f311"; +} + +.la-spoon:before { + content: "\f312"; +} + +.la-spotify:before { + content: "\f313"; +} + +.la-square:before { + content: "\f314"; +} + +.la-square-o:before { + content: "\f315"; +} + +.la-stack-exchange:before { + content: "\f316"; +} + +.la-stack-overflow:before { + content: "\f317"; +} + +.la-star:before { + content: "\f318"; +} + +.la-star-half:before { + content: "\f319"; +} + +.la-star-half-empty:before, .la-star-half-full:before, .la-star-half-o:before { + content: "\f31a"; +} + +.la-star-o:before { + content: "\f31b"; +} + +.la-steam:before { + content: "\f31c"; +} + +.la-steam-square:before { + content: "\f31d"; +} + +.la-step-backward:before { + content: "\f31e"; +} + +.la-step-forward:before { + content: "\f31f"; +} + +.la-stethoscope:before { + content: "\f320"; +} + +.la-sticky-note:before { + content: "\f321"; +} + +.la-sticky-note-o:before { + content: "\f322"; +} + +.la-stop:before { + content: "\f323"; +} + +.la-street-view:before { + content: "\f324"; +} + +.la-strikethrough:before { + content: "\f325"; +} + +.la-stumbleupon:before { + content: "\f326"; +} + +.la-stumbleupon-circle:before { + content: "\f327"; +} + +.la-subscript:before { + content: "\f328"; +} + +.la-subway:before { + content: "\f329"; +} + +.la-suitcase:before { + content: "\f32a"; +} + +.la-sun-o:before { + content: "\f32b"; +} + +.la-superscript:before { + content: "\f32c"; +} + +.la-table:before { + content: "\f32d"; +} + +.la-tablet:before { + content: "\f32e"; +} + +.la-tachometer:before { + content: "\f32f"; +} + +.la-tag:before { + content: "\f330"; +} + +.la-tags:before { + content: "\f331"; +} + +.la-tasks:before { + content: "\f332"; +} + +.la-taxi:before { + content: "\f333"; +} + +.la-television:before, .la-tv:before { + content: "\f334"; +} + +.la-tencent-weibo:before { + content: "\f335"; +} + +.la-terminal:before { + content: "\f336"; +} + +.la-text-height:before { + content: "\f337"; +} + +.la-text-width:before { + content: "\f338"; +} + +.la-th:before { + content: "\f339"; +} + +.la-th-large:before { + content: "\f33a"; +} + +.la-th-list:before { + content: "\f33b"; +} + +.la-thumb-tack:before { + content: "\f33c"; +} + +.la-thumbs-down:before { + content: "\f33d"; +} + +.la-thumbs-o-down:before { + content: "\f33e"; +} + +.la-thumbs-o-up:before { + content: "\f33f"; +} + +.la-thumbs-up:before { + content: "\f340"; +} + +.la-ticket:before { + content: "\f341"; +} + +.la-remove:before, .la-times:before { + content: "\f342"; +} + +.la-times-circle:before { + content: "\f343"; +} + +.la-times-circle-o:before { + content: "\f344"; +} + +.la-tint:before { + content: "\f345"; +} + +.la-toggle-off:before { + content: "\f346"; +} + +.la-toggle-on:before { + content: "\f347"; +} + +.la-trademark:before { + content: "\f348"; +} + +.la-train:before { + content: "\f349"; +} + +.la-intersex:before, .la-transgender:before { + content: "\f34a"; +} + +.la-transgender-alt:before { + content: "\f34b"; +} + +.la-trash:before { + content: "\f34c"; +} + +.la-trash-o:before { + content: "\f34d"; +} + +.la-tree:before { + content: "\f34e"; +} + +.la-trello:before { + content: "\f34f"; +} + +.la-tripadvisor:before { + content: "\f350"; +} + +.la-trophy:before { + content: "\f351"; +} + +.la-truck:before { + content: "\f352"; +} + +.la-try:before { + content: "\f353"; +} + +.la-tty:before { + content: "\f354"; +} + +.la-tumblr:before { + content: "\f355"; +} + +.la-tumblr-square:before { + content: "\f356"; +} + +.la-turkish-lira:before { + content: "\f357"; +} + +.la-twitch:before { + content: "\f358"; +} + +.la-twitter:before { + content: "\f359"; +} + +.la-twitter-square:before { + content: "\f35a"; +} + +.la-umbrella:before { + content: "\f35b"; +} + +.la-underline:before { + content: "\f35c"; +} + +.la-undo:before { + content: "\f35d"; +} + +.la-university:before { + content: "\f35e"; +} + +.la-unlink:before { + content: "\f35f"; +} + +.la-unlock:before { + content: "\f360"; +} + +.la-unlock-alt:before { + content: "\f361"; +} + +.la-upload:before { + content: "\f362"; +} + +.la-usd:before { + content: "\f363"; +} + +.la-user:before { + content: "\f364"; +} + +.la-user-md:before { + content: "\f365"; +} + +.la-user-plus:before { + content: "\f366"; +} + +.la-user-secret:before { + content: "\f367"; +} + +.la-user-times:before { + content: "\f368"; +} + +.la-users:before { + content: "\f369"; +} + +.la-venus:before { + content: "\f36a"; +} + +.la-venus-double:before { + content: "\f36b"; +} + +.la-venus-mars:before { + content: "\f36c"; +} + +.la-viacoin:before { + content: "\f36d"; +} + +.la-video-camera:before { + content: "\f36e"; +} + +.la-vimeo:before { + content: "\f36f"; +} + +.la-vimeo-square:before { + content: "\f370"; +} + +.la-vine:before { + content: "\f371"; +} + +.la-vk:before { + content: "\f372"; +} + +.la-volume-down:before { + content: "\f373"; +} + +.la-volume-off:before { + content: "\f374"; +} + +.la-volume-up:before { + content: "\f375"; +} + +.la-warning:before { + content: "\f376"; +} + +.la-wechat:before { + content: "\f377"; +} + +.la-weibo:before { + content: "\f378"; +} + +.la-weixin:before { + content: "\f379"; +} + +.la-whatsapp:before { + content: "\f37a"; +} + +.la-wheelchair:before { + content: "\f37b"; +} + +.la-wifi:before { + content: "\f37c"; +} + +.la-wikipedia-w:before { + content: "\f37d"; +} + +.la-windows:before { + content: "\f37e"; +} + +.la-won:before { + content: "\f37f"; +} + +.la-wordpress:before { + content: "\f380"; +} + +.la-wrench:before { + content: "\f381"; +} + +.la-xing:before { + content: "\f382"; +} + +.la-xing-square:before { + content: "\f383"; +} + +.la-y-combinator:before { + content: "\f384"; +} + +.la-y-combinator-square:before { + content: "\f385"; +} + +.la-yahoo:before { + content: "\f386"; +} + +.la-yc:before { + content: "\f387"; +} + +.la-yc-square:before { + content: "\f388"; +} + +.la-yelp:before { + content: "\f389"; +} + +.la-yen:before { + content: "\f38a"; +} + +.la-youtube:before { + content: "\f38b"; +} + +.la-youtube-play:before { + content: "\f38c"; +} + +.la-youtube-square:before { + content: "\f38d"; +} + +/* Card */ +.card { + border-radius: 0px; + background-color: #ffffff; + margin-bottom: 30px; + -webkit-box-shadow: 0px 1px 15px 1px rgba(69, 65, 78, 0.08); + -moz-box-shadow: 0px 1px 15px 1px rgba(69, 65, 78, 0.08); + box-shadow: 0px 1px 15px 1px rgba(69, 65, 78, 0.08); + border: 1px solid #eee; +} +.card .card-header { + padding: 15px 15px; + background-color: transparent; + border-bottom: 1px solid #ebedf2 !important; +} +.card .card-title { + margin: 0; + color: #575962; + font-size: 18px; + font-weight: 600; + line-height: 1.6; +} +.card .card-sub { + display: block; + margin: 5px 0 10px 0; + font-size: .9rem; + background: #f7f8fa; + color: #575962; + padding: 0.85rem 1.5rem; + border-radius: 4px; +} +.card .card-category { + margin-top: 5px; + font-size: 14px; + font-weight: 400; + color: #9A9A9A; + margin-bottom: 0px; +} +.card label { + font-size: 14px; + font-weight: 400; + color: #9A9A9A; + margin-bottom: 0px; +} +.card .card-body { + padding: 15px 15px 10px 15px; +} +.card .card-footer { + background-color: transparent; + line-height: 30px; + border-top: 1px solid #ebedf2 !important; + font-size: 14px; +} +.card .card-action { + padding: 30px; + background-color: transparent; + line-height: 30px; + border-top: 1px solid #ebedf2 !important; + font-size: 14px; +} +.card .card-footer hr { + margin-top: 5px; + margin-bottom: 5px; +} +.card .card-footer .legend { + display: inline-block; +} + +.card-stats .card-category { + margin-top: 0px; +} +.card-stats .icon-big { + font-size: 3em; + min-height: 64px; +} + +.card-tasks .table thead th { + border-top: 1px solid #f4f4f4; + background: #fafafa !important; +} +.card-tasks .table .form-check { + padding: 0 0 0 0.75rem !important; +} +.card-tasks .table .form-check label { + margin-bottom: 0px !important; +} +.card-tasks .table tbody td:first-child, .card-tasks .table thead th:first-child { + padding-left: 15px; + padding-right: 15px; +} +.card-tasks .table tbody td:last-child, .card-tasks .table thead th:last-child { + padding-right: 15px; +} +.card-tasks .card-body .table td { + font-size: 14px; + line-height: 1.8; +} +.card-tasks .card-body .table td .btn { + font-size: 17px; + opacity: 0.7; + transition: all .3s; +} +.card-tasks .card-body .table td:hover .btn { + opacity: 1; +} + +.card-default, .card-primary, .card-info, .card-success, .card-warning, .card-danger { + color: #ffffff; + border: 0px; +} + +.card-default .card-header, .card-primary .card-header, .card-info .card-header, .card-success .card-header, .card-warning .card-header, .card-danger .card-header { + border-bottom: transparent !important; +} + +.card-default .card-category, .card-primary .card-category, .card-info .card-category, .card-success .card-category, .card-warning .card-category, .card-danger .card-category, .card-default .card-title, .card-primary .card-title, .card-info .card-title, .card-success .card-title, .card-warning .card-title, .card-danger .card-title, .card-default label, .card-primary label, .card-info label, .card-success label, .card-warning label, .card-danger label { + color: #ffffff; +} + +.card-default .icon-big > i, .card-primary .icon-big > i, .card-info .icon-big > i, .card-success .icon-big > i, .card-warning .icon-big > i, .card-danger .icon-big > i { + color: #ffffff !important; +} + +.card-default .card-footer, .card-primary .card-footer, .card-info .card-footer, .card-success .card-footer, .card-warning .card-footer, .card-danger .card-footer { + border-top: transparent !important; +} + +.card-default { + background: #607D8B; +} + +.card-primary { + background: #1D62F0; +} + +.card-info { + background: #23CCEF; +} + +.card-success { + background: #59d05d; +} + +.card-warning { + background: #fbad4c; +} + +.card-danger { + background: #ff646d; +} + +/* Progress Card */ +.progress-card { + margin-bottom: 25px; +} + +/* Row Card No Padding */ +.row-card-no-pd { + margin-left: 0; + margin-right: 0; + background: #ffffff; + margin-bottom: 30px; + padding-top: 30px; + padding-bottom: 30px; + position: relative; +} +.row-card-no-pd .card { + margin-bottom: 0px; + border-width: 0px; + box-shadow: none; + position: unset; +} +.row-card-no-pd [class*=col-] .card:after { + position: absolute; + height: calc(100%); + width: 1px; + background: #eee; + content: ''; + right: 0px; +} +.row-card-no-pd [class*=col-] .card:after:last-child { + width: 0px; +} + +/* Form */ +.form-button-action { + display: inline-flex; +} + +/* CheckBox Input */ +.select-all-checkbox + .form-check-sign:before { + background: #ccc !important; + border-color: #ccc !important; +} + +[type="checkbox"]:not(:checked), [type="checkbox"]:checked { + position: absolute; + left: -9999px; +} +[type="checkbox"]:not(:checked) + .form-check-sign, [type="checkbox"]:checked + .form-check-sign { + position: relative; + padding-left: 1.65em; + color: #777; + cursor: pointer; +} +[type="checkbox"]:not(:checked) + .form-check-sign:before, [type="checkbox"]:checked + .form-check-sign:before { + content: ''; + position: absolute; + left: 0; + top: 1px; + width: 16px; + height: 16px; + border: 1px solid #ccc; + background: transparent; + border-radius: 4px; +} +[type="checkbox"]:not(:checked) + .form-check-sign:after, [type="checkbox"]:checked + .form-check-sign:after { + content: "\f17b"; + display: inline-block; + position: absolute; + top: -1px; + left: 2px; + width: 18px; + height: 18px; + text-align: center; + font-size: 1.5em; + line-height: 0.8; + color: #4D7CFE; + transition: all .2s; + font-family: LineAwesome; +} +[type="checkbox"]:not(:checked) + .form-check-sign:after { + opacity: 0; + transform: scale(0); +} +[type="checkbox"]:checked + .form-check-sign { + font-weight: 700; +} +[type="checkbox"]:checked + .form-check-sign:after { + opacity: 1; + transform: scale(1); +} +[type="checkbox"]:disabled:not(:checked) + .form-check-sign:before { + box-shadow: none; + border-color: #bbb; + background-color: #ddd; +} +[type="checkbox"]:disabled:checked + .form-check-sign:before { + box-shadow: none; + border-color: #bbb; + background-color: #ddd; +} +[type="checkbox"]:disabled:checked + .form-check-sign:after { + color: #999; +} +[type="checkbox"]:disabled + .form-check-sign { + color: #aaa; +} +[type="checkbox"]:checked:focus + .form-check-sign:before, [type="checkbox"]:not(:checked):focus + .form-check-sign:before { + border: 1px solid #ccc; +} + +/* checked mark aspect changes */ +/* disabled checkbox */ +/* accessibility */ +/* hover style just for information */ +.form-check-sign:hover:before { + border: 1px solid #ccc !important; +} + +.form-check { + padding-left: 0.75rem; +} + +.form-check-input { + position: relative; + margin-top: .3rem; +} + +/* Radio Input */ +[type="radio"]:not(:checked), [type="radio"]:checked { + position: absolute; + left: -9999px; +} +[type="radio"]:not(:checked) + .form-radio-sign, [type="radio"]:checked + .form-radio-sign { + position: relative; + padding-left: 1.65em; + color: #777; + cursor: pointer; +} +[type="radio"]:not(:checked) + .form-radio-sign:before { + content: "\f18a"; + font-size: 22px; + font-family: LineAwesome; + position: absolute; + left: 0; + top: auto; + background: transparent; + line-height: 1; +} +[type="radio"]:checked + .form-radio-sign:before { + content: "\f18a"; + font-size: 22px; + font-family: LineAwesome; + position: absolute; + left: 0; + top: auto; + background: transparent; + line-height: 1; + display: none; +} +[type="radio"]:not(:checked) + .form-radio-sign:after, [type="radio"]:checked + .form-radio-sign:after { + content: "\f1bc"; + position: absolute; + left: 0px; + top: auto; + text-align: center; + font-size: 22px; + color: #4D7CFE; + transition: all .2s; + line-height: 1; + font-family: LineAwesome; +} +[type="radio"]:not(:checked) + .form-radio-sign:after { + opacity: 0; + transform: scale(0); +} +[type="radio"]:checked + .form-radio-sign { + font-weight: 700; +} +[type="radio"]:checked + .form-radio-sign:after { + opacity: 1; + transform: scale(1); +} +[type="radio"]:disabled:not(:checked) + .form-radio-sign:before { + box-shadow: none; + opacity: 0.65; +} +[type="radio"]:disabled:checked + .form-radio-sign:before { + box-shadow: none; + opacity: 0.65; +} +[type="radio"]:disabled:checked + .form-radio-sign:after { + opacity: 0.65; +} +[type="radio"]:disabled + .form-radio-sign { + color: #aaa; + opacity: 0.65; +} +[type="radio"]:checked:focus + .form-radio-sign:before, [type="radio"]:not(:checked):focus + .form-radio-sign:before { + border: 1px solid #ccc; +} + +/* checked mark aspect changes */ +/* disabled radio */ +/* accessibility */ +.form-radio { + padding-left: 0.75rem; +} + +.form-radio-input { + position: relative; + margin-top: .3rem; +} + +/* Input */ +.form-group, .form-check { + margin-bottom: 0; + padding: 15px 10px; +} + +.form-group label, .form-check label { + margin-bottom: .5rem !important; + color: #3f4047 !important; + font-weight: 400; + font-size: 1rem; +} + +.form-inline label { + margin-bottom: 0 !important; +} + +.input-fixed { + width: 200px; +} + +.form-control.input-full { + width: 100% !important; +} + +.has-success .form-control { + border-color: #59d05d; + color: #59d05d; +} + +.has-error .form-control { + border-color: #ff646d; + color: #ff646d; +} + +.has-feedback { + position: relative; +} + +.form-control-feedback { + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 20px; +} + +.has-success .form-control-feedback { + color: #59d05d; +} + +.has-error .form-control-feedback { + color: #ff646d; +} + +.input-group.has-icon { + border-radius: .25rem; + border: 1px solid #ced4da; +} +.input-group.has-success, .input-group.has-icon.has-success { + border-color: 1px solid #59d05d !important; + color: #59d05d; +} +.input-group.has-error { + border: 1px solid #ff646d !important; + color: #ff646d; +} +.input-group.has-icon.has-error { + border: 1px solid #ff646d !important; + color: #ff646d; +} +.input-group.has-icon .form-control { + border-radius: .25rem; + border: 0px; + position: relative; +} +.input-group.has-icon .input-group-icon { + background: transparent; + border: 0px; +} + +.input-square { + border-radius: 0px !important; +} + +.input-pill { + border-radius: 1.3rem !important; +} + +.input-solid { + background: #e8e8e8 !important; + border-color: #e8e8e8 !important; +} + +.form-control:disabled, .form-control[readonly] { + background: #e8e8e8 !important; + border-color: #e8e8e8 !important; +} +.form-control:disabled, .form-control[readonly] { + opacity: 0.6 !important; +} + +/* Table */ +.table { + color: #555 !important; +} +.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { + vertical-align: middle; +} +.table > tbody > tr > td, .table > tbody > tr > th { + padding: 8px; +} +.table > tfoot > tr > td, .table > tfoot > tr > th { + padding: 8px; +} +.table thead th { + color: #554; + border-bottom-width: 2px; +} +.table td, .table th { + font-size: 14px; + border-color: #ebedf2 !important; + padding: 0.75rem !important; +} + +/* table full-width */ +.table-full-width { + margin-left: -15px; + margin-right: -15px; +} + +/* table bordered states */ +.table-bordered-bd-default td, .table-bordered-bd-default th { + border: 1px solid #607D8B !important; +} + +.table-bordered-bd-primary td, .table-bordered-bd-primary th { + border: 1px solid #1D62F0 !important; +} + +.table-bordered-bd-info td, .table-bordered-bd-info th { + border: 1px solid #23CCEF !important; +} + +.table-bordered-bd-success td, .table-bordered-bd-success th { + border: 1px solid #59d05d !important; +} + +.table-bordered-bd-warning td, .table-bordered-bd-warning th { + border: 1px solid #fbad4c !important; +} + +.table-bordered-bd-danger td, .table-bordered-bd-danger th { + border: 1px solid #ff646d !important; +} + +.table-striped td, .table-striped th { + border-top: 0 !important; + border-bottom: 0 !important; +} + +/* table head background states*/ +.table-head-bg-default { + border: 1px solid #607D8B !important; +} + +.table-head-bg-primary { + border: 1px solid #1D62F0 !important; +} + +.table-head-bg-info { + border: 1px solid #23CCEF !important; +} + +.table-head-bg-success { + border: 1px solid #59d05d !important; +} + +.table-head-bg-warning { + border: 1px solid #fbad4c !important; +} + +.table-head-bg-danger { + border: 1px solid #ff646d !important; +} + +.table-head-bg-default thead th, .table-striped-bg-default tbody tr:nth-of-type(odd) { + background: #607D8B !important; + color: #ffffff !important; + border: 0px !important; +} + +.table-head-bg-primary thead th, .table-striped-bg-primary tbody tr:nth-of-type(odd) { + background: #1D62F0 !important; + color: #ffffff !important; + border: 0px !important; +} + +.table-head-bg-info thead th, .table-striped-bg-info tbody tr:nth-of-type(odd) { + background: #23CCEF !important; + color: #ffffff !important; + border: 0px !important; +} + +.table-head-bg-success thead th, .table-striped-bg-success tbody tr:nth-of-type(odd) { + background: #59d05d !important; + color: #ffffff !important; + border: 0px !important; +} + +.table-head-bg-warning thead th, .table-striped-bg-warning tbody tr:nth-of-type(odd) { + background: #fbad4c !important; + color: #ffffff !important; + border: 0px !important; +} + +.table-head-bg-danger thead th, .table-striped-bg-danger tbody tr:nth-of-type(odd) { + background: #ff646d !important; + color: #ffffff !important; + border: 0px !important; +} + +/* table-responsive */ +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +/* Navbar */ +.navbar .navbar-nav .nav-item .nav-link { + display: inline-block; + vertical-align: middle; + color: #666; + line-height: 55px; + letter-spacing: 0.04em; + padding: 0 20px 0 0; + position: relative; + font-size: 14px; + font-weight: 500; + text-align: center; +} +.navbar .navbar-nav .nav-item .nav-link i { + font-size: 22px; + width: 30px; + vertical-align: middle; +} + +.navbar-expand-lg .navbar-nav .dropdown-menu { + left: auto; + right: 0; +} + +.dropdown-item { + font-size: 14px; +} + +.navbar .navbar-nav .notification { + position: absolute; + background-color: #ff646d; + text-align: center; + border-radius: 10px; + min-width: 17px; + height: 17px; + font-size: 11px; + color: #ffffff; + font-weight: bold; + line-height: 17px; + top: 11px; + right: 12px; +} + +.navbar-header { + padding: 0px 15px; +} +.navbar-header .dropdown-toggle { + line-height: 55px; +} +.navbar-header .dropdown-toggle::after { + margin-left: 0; +} + +.profile-pic:hover, .profile-pic:focus { + text-decoration: none; +} + +.navbar-header .dropdown-toggle::after { + vertical-align: middle; + color: #555; +} + +.hidden-caret .dropdown-toggle::after { + display: none !important; +} + +.profile-pic .img-circle { + border-radius: 50%; +} +.profile-pic span { + font-size: 14px; + font-weight: 600; + padding: 0 10px; + color: #555; +} + +/* Nav Search */ +.nav-search .input-group { + border: 1px solid #eee; + background: #eee; + border-radius: 50px; +} +.nav-search .input-group:hover, .nav-search .input-group:focus { + border: 1px solid #ddd; +} +.nav-search .form-control { + border: 0; + background: transparent; + font-size: 14px; +} +.nav-search .input-group-text { + border: 0; + background: transparent; +} +.nav-search .search-icon { + font-size: 21px; + color: #666; +} + +/* Badge */ +.badge { + border-radius: 50px; + margin-left: auto; + line-height: 1; + padding: 6px 10px; + vertical-align: middle; + font-weight: 700; + font-size: 11px; +} + +.badge-count { + border: 1px solid #ddd; +} + +.badge-default { + background: #607D8B; + color: #ffffff !important; +} + +.badge-primary { + background: #1D62F0; +} + +.badge-info { + background: #23CCEF; +} + +.badge-success { + background-color: #59d05d; +} + +.badge-warning { + background: #fbad4c; + color: #ffffff !important; +} + +.badge-danger { + background-color: #ff646d; +} + +.dropdown-menu { + border: 1px solid rgba(120, 130, 140, 0.13); + border-radius: 0; + box-shadow: 0 3px 12px rgba(0, 0, 0, 0.05) !important; + -webkit-box-shadow: 0 !important; + -moz-box-shadow: 0 !important; + padding-bottom: 8px; + margin-top: 0; +} + +/* Notification dropdown */ +.dropdown-title { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + color: #263238; + font-size: 15px; + font-weight: 800; + padding: 5px 20px 10px; + text-align: center; +} + +.notif-box { + width: 280px; + padding-bottom: 0px; +} +.notif-box .notif-center a { + display: flex; + border-bottom: 1px solid #eaeaea; + color: #4d585f; +} +.notif-box .notif-center a:hover { + text-decoration: none; + background: #fafafa; + transition: all .2s; +} +.notif-box .notif-center a .notif-icon { + display: inline-flex; + width: 40px; + height: 40px; + margin: 10px; + align-items: center; + justify-content: center; + background: #eee; + border-radius: 50%; +} +.notif-box .notif-center a .notif-img { + display: inline-flex; + width: 40px; + height: 40px; + margin: 10px; + align-items: center; + justify-content: center; + background: #eee; + border-radius: 50%; +} +.notif-box .notif-center a .notif-img img { + width: 100%; + height: 100%; + border-radius: 50%; +} +.notif-box .notif-center a .notif-icon.notif-default, .notif-box .notif-center a .notif-icon.notif-primary, .notif-box .notif-center a .notif-icon.notif-info, .notif-box .notif-center a .notif-icon.notif-success, .notif-box .notif-center a .notif-icon.notif-warning, .notif-box .notif-center a .notif-icon.notif-danger { + color: #ffffff !important; +} +.notif-box .notif-center a .notif-icon.notif-default { + background: #607D8B !important; +} +.notif-box .notif-center a .notif-icon.notif-primary { + background: #1D62F0 !important; +} +.notif-box .notif-center a .notif-icon.notif-info { + background: #23CCEF !important; +} +.notif-box .notif-center a .notif-icon.notif-success { + background: #59d05d !important; +} +.notif-box .notif-center a .notif-icon.notif-warning { + background: #fbad4c !important; +} +.notif-box .notif-center a .notif-icon.notif-danger { + background: #ff646d !important; +} +.notif-box .notif-center a .notif-icon i { + font-size: 21px; +} +.notif-box .notif-center a .notif-content { + padding: 10px 15px 10px 0; +} +.notif-box .notif-center a .notif-content .block { + font-size: 14px; + line-height: 20px; + display: block; +} +.notif-box .notif-center a .notif-content .time { + color: #7d8c95; + font-size: 12px; +} +.notif-box .see-all { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 20px; + color: #555; + font-size: 15px; + font-weight: 400; + text-decoration: none; +} +.notif-box .see-all:hover { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 20px; + color: #555; + font-size: 15px; + font-weight: 400; + text-decoration: none; +} +.notif-box .see-all i { + float: right; +} + +/* User Dropdown */ +.dropdown-user { + width: 280px; +} + +.user-box { + display: flex; + padding: .25rem 1rem; +} +.user-box .u-img { + width: 80px; +} +.user-box .u-img img { + width: 100%; + border-radius: 5px; +} +.user-box .u-text { + padding: 0 10px; +} +.user-box .u-text h4 { + margin-bottom: 0; + font-size: 18px; +} +.user-box .u-text .text-muted { + font-size: 13px; + margin-bottom: 5px; +} +.user-box .u-text .btn { + font-size: 12px; +} + +/* Chart */ +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: .255em; + vertical-align: .255em; + content: ""; + border-top: .3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.chart { + margin: 30px 0 30px; + position: relative; +} + +.ct-chart-pie .ct-label, .ct-chart-donut .ct-label { + fill: #ffffff !important; + color: #ffffff !important; +} + +.chart-circle { + display: flex; + justify-content: center; +} +.chart-circle .circles-text { + font-size: 28px !important; +} + +.color-box { + width: 15px; + height: 15px; + border-radius: 2px; + display: inline-block; + float: left; + padding-top: 3px; + margin: 2px 5px 0 0; +} + +.chart-pie { + display: block; + position: relative; + width: 100%; +} +.chart-pie:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 75%; +} +.chart-pie:after { + content: ""; + display: table; + clear: both; +} +.chart-pie svg { + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* Alert */ +.alert { + border: 0px; + color: #ffffff; + position: relative; + padding-left: 65px; +} +.alert [data-notify="icon"] { + font-size: 30px; + display: block; + left: 15px; + position: absolute; + top: 50%; + margin-top: -15px; +} +.alert [data-notify="title"] { + display: block; + font-weight: bold; +} +.alert [data-notify="message"] { + font-size: 14px; +} +.alert .close { + background: rgba(255, 255, 255, 0.8); + width: 25px; + height: 25px; + line-height: 25px; + top: auto !important; + border-radius: 50%; +} + +.alert-primary { + background-color: #1D62F0; +} + +.alert-info { + background-color: #23CCEF; +} + +.alert-success { + background-color: #59d05d; +} + +.alert-warning { + background-color: #fbad4c; +} + +.alert-danger { + background-color: #ff646d; +} + +/* Button */ +.btn { + padding: 8px 16px; + font-size: 14px; + opacity: 0.9; + border-radius: 3px; +} +.btn:hover, .btn:focus { + opacity: 1; +} + +.btn-lg { + font-size: 18px; + border-radius: 6px; + padding: 10px 30px; + font-weight: 400; +} + +.btn-sm { + font-size: 12px; + padding: 7px 13px; +} + +.btn-xs { + font-size: 11px; + padding: 5px 9px; +} + +.btn.disabled:hover, .btn:hover:disabled { + opacity: 0.65; +} + +.btn-default { + background: #607D8B !important; + color: #ffffff !important; +} +.btn-default:hover, .btn-default:focus, .btn-default:disabled { + background: #607D8B !important; + color: #ffffff !important; +} + +.btn-primary { + background: #1D62F0 !important; + border-color: #1D62F0 !important; +} +.btn-primary:hover, .btn-primary:focus, .btn-primary:disabled { + background: #1D62F0 !important; + border-color: #1D62F0 !important; +} + +.btn-info { + background: #23CCEF !important; + border-color: #23CCEF !important; +} +.btn-info:hover, .btn-info:focus, .btn-info:disabled { + background: #23CCEF !important; + border-color: #23CCEF !important; +} + +.btn-success { + background: #59d05d !important; + border-color: #59d05d !important; +} +.btn-success:hover, .btn-success:focus, .btn-success:disabled { + background: #59d05d !important; + border-color: #59d05d !important; +} + +.btn-warning { + background: #fbad4c !important; + border-color: #fbad4c !important; + color: #ffffff !important; +} +.btn-warning:hover, .btn-warning:focus, .btn-warning:disabled { + background: #fbad4c !important; + border-color: #fbad4c !important; + color: #ffffff !important; +} + +.btn-danger { + background: #ff646d !important; + border-color: #ff646d !important; +} +.btn-danger:hover, .btn-danger:focus, .btn-danger:disabled { + background: #ff646d !important; + border-color: #ff646d !important; +} + +.btn-border { + background: transparent !important; + font-weight: 600 !important; +} +.btn-border:hover, .btn-border:focus { + background: transparent !important; + font-weight: 600 !important; +} + +.btn-default.btn-border { + color: #607D8B !important; + border: 2px solid #607D8B !important; +} + +.btn-primary.btn-border { + color: #1D62F0 !important; + border: 2px solid #1D62F0 !important; +} + +.btn-info.btn-border { + color: #23CCEF !important; + border: 2px solid #23CCEF !important; +} + +.btn-success.btn-border { + color: #59d05d !important; + border: 2px solid #59d05d !important; +} + +.btn-warning.btn-border { + color: #fbad4c !important; + border: 2px solid #fbad4c !important; +} + +.btn-danger.btn-border { + color: #ff646d !important; + border: 2px solid #ff646d !important; +} + +.btn-round { + border-radius: 100px !important; +} + +.btn-link { + border: 0 !important; + background: transparent !important; +} +.btn-link:hover, .btn-link:focus { + text-decoration: underline !important; + background: transparent !important; + border: 0 !important; +} + +.btn-default.btn-link { + color: #607D8B !important; +} +.btn-default.btn-link:hover { + color: #607D8B !important; +} + +.btn-primary.btn-link { + color: #1D62F0 !important; +} +.btn-primary.btn-link:hover { + color: #1D62F0 !important; +} + +.btn-info.btn-link { + color: #23CCEF !important; +} +.btn-info.btn-link:hover { + color: #23CCEF !important; +} + +.btn-success.btn-link { + color: #59d05d !important; +} +.btn-success.btn-link:hover { + color: #59d05d !important; +} + +.btn-warning.btn-link { + color: #fbad4c !important; +} +.btn-warning.btn-link:hover { + color: #fbad4c !important; +} + +.btn-danger.btn-link { + color: #ff646d !important; +} +.btn-danger.btn-link:hover { + color: #ff646d !important; +} + +.toggle-on.btn { + color: #ffffff !important; +} + +.toggle-handle { + background: #ffffff !important; +} +.toggle-handle:hover { + background: #ffffff !important; +} + +.btn-round .toggle-handle { + border-radius: 50px; +} + +.btn-rounded { + border-radius: 60px !important; +} + +.btn-simple-default { + color: #607D8B; + text-decoration: none; +} +.btn-simple-default:hover { + color: #607D8B; + text-decoration: none; +} + +.btn-simple-primary { + color: #1D62F0; + text-decoration: none; +} +.btn-simple-primary:hover { + color: #1D62F0; + text-decoration: none; +} + +.btn-simple-info { + color: #23CCEF; + text-decoration: none; +} +.btn-simple-info:hover { + color: #23CCEF; + text-decoration: none; +} + +.btn-simple-danger { + color: #ff646d; + text-decoration: none; +} +.btn-simple-danger:hover { + color: #ff646d; + text-decoration: none; +} + +.btn-simple-warning { + color: #fbad4c; + text-decoration: none; +} +.btn-simple-warning:hover { + color: #fbad4c; + text-decoration: none; +} + +.btn-simple-success { + color: #59d05d; + text-decoration: none; +} +.btn-simple-success:hover { + color: #59d05d; + text-decoration: none; +} + +.btn-full { + width: 100%; +} + +.btn-no-radius { + border-radius: 0px; +} + +/* Nav Pill */ +.nav-pills > li:first-child > a { + border-radius: 4px 0 0 4px !important; +} +.nav-pills > li:last-child > a { + border-radius: 0 4px 4px 0 !important; +} + +.nav-link.disabled { + color: #6c757d !important; +} + +.nav-pills > li > a { + margin-left: -1px; + border-radius: 0 !important; + border: 1px solid #1D62F0; + color: #1D62F0; +} +.nav-pills > li > a.active { + background: #1D62F0; +} +.nav-pills > li > a:hover { + background: #fafafa; +} +.nav-pills.nav-default > li > a { + border: 1px solid #607D8B; + color: #607D8B; +} +.nav-pills.nav-default > li > a.active { + background: #607D8B; +} +.nav-pills.nav-primary > li > a { + border: 1px solid #1D62F0; + color: #1D62F0; +} +.nav-pills.nav-primary > li > a.active { + background: #1D62F0; +} +.nav-pills.nav-info > li > a { + border: 1px solid #23CCEF; + color: #23CCEF; +} +.nav-pills.nav-info > li > a.active { + background: #23CCEF; +} +.nav-pills.nav-success > li > a { + border: 1px solid #59d05d; + color: #59d05d; +} +.nav-pills.nav-success > li > a.active { + background: #59d05d; +} +.nav-pills.nav-warning > li > a { + border: 1px solid #fbad4c; + color: #fbad4c; +} +.nav-pills.nav-warning > li > a.active { + background: #fbad4c; +} +.nav-pills.nav-danger > li > a { + border: 1px solid #ff646d; + color: #ff646d; +} +.nav-pills.nav-danger > li > a.active { + background: #ff646d; +} + +/* Pagination */ +.pagination > li > a, .pagination > li:first-child > a, .pagination > li:last-child > a, .pagination > li > span, .pagination > li:first-child > span, .pagination > li:last-child > span { + border-radius: 100px !important; + margin: 0 2px; + color: #777777; + border-color: #ddd; +} +.pagination.pg-primary > li.active > a, .pagination.pg-primary > li.active:first-child > a, .pagination.pg-primary > li.active:last-child > a, .pagination.pg-primary > li.active > span, .pagination.pg-primary > li.active:first-child > span, .pagination.pg-primary > li.active:last-child > span { + background: #1D62F0; + border-color: #1D62F0; + color: #ffffff; +} +.pagination.pg-info > li.active > a, .pagination.pg-info > li.active:first-child > a, .pagination.pg-info > li.active:last-child > a, .pagination.pg-info > li.active > span, .pagination.pg-info > li.active:first-child > span, .pagination.pg-info > li.active:last-child > span { + background: #23CCEF; + border-color: #23CCEF; + color: #ffffff; +} +.pagination.pg-success > li.active > a, .pagination.pg-success > li.active:first-child > a, .pagination.pg-success > li.active:last-child > a, .pagination.pg-success > li.active > span, .pagination.pg-success > li.active:first-child > span, .pagination.pg-success > li.active:last-child > span { + background: #59d05d; + border-color: #59d05d; + color: #ffffff; +} +.pagination.pg-warning > li.active > a, .pagination.pg-warning > li.active:first-child > a, .pagination.pg-warning > li.active:last-child > a, .pagination.pg-warning > li.active > span, .pagination.pg-warning > li.active:first-child > span, .pagination.pg-warning > li.active:last-child > span { + background: #fbad4c; + border-color: #fbad4c; + color: #ffffff; +} +.pagination.pg-danger > li.active > a, .pagination.pg-danger > li.active:first-child > a, .pagination.pg-danger > li.active:last-child > a, .pagination.pg-danger > li.active > span, .pagination.pg-danger > li.active:first-child > span, .pagination.pg-danger > li.active:last-child > span { + background: #ff646d; + border-color: #ff646d; + color: #ffffff; +} +.pagination.pg-default > li.active > a, .pagination.pg-default > li.active:first-child > a, .pagination.pg-default > li.active:last-child > a, .pagination.pg-default > li.active > span, .pagination.pg-default > li.active:first-child > span, .pagination.pg-default > li.active:last-child > span { + background: #607D8B; + border-color: #607D8B; + color: #ffffff; +} + +/* Slider */ +.slider-default .ui-slider-range { + background: #607D8B; +} + +.slider-primary .ui-slider-range { + background: #1D62F0; +} + +.slider-info .ui-slider-range { + background: #23CCEF; +} + +.slider-success .ui-slider-range { + background: #59d05d; +} + +.slider-warning .ui-slider-range { + background: #fbad4c; +} + +.slider-danger .ui-slider-range { + background: #ff646d; +} + +/* Modal */ +.modal .bg-default .modal-title, .modal .bg-primary .modal-title, .modal .bg-info .modal-title, .modal .bg-success .modal-title, .modal .bg-warning .modal-title, .modal .bg-danger .modal-title { + color: #ffffff !important; +} + +.modal-content { + border-radius: .4rem !important; + border: 0 !important; +} + +/* For all zoom buttons */ +.mapael .map { + position: relative; +} +.mapael .zoomButton { + background-color: #292929; + border: 1px solid #292929; + color: #ffffff; + width: 15px; + height: 15px; + line-height: 12px; + text-align: center; + border-radius: 3px; + cursor: pointer; + position: absolute; + top: 0; + font-weight: bold; + left: 10px; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + user-select: none; +} +.mapael .zoomReset { + top: 10px; +} +.mapael .zoomIn { + top: 30px; +} +.mapael .zoomOut { + top: 50px; +} +.mapael .mapTooltip { + position: absolute; + background-color: #474c4b; + moz-opacity: 0.70; + opacity: 0.70; + filter: alpha(opacity=70); + border-radius: 10px; + padding: 10px; + z-index: 1000; + max-width: 200px; + display: none; + color: #ffffff; +} + +/* Responsive */ +@media screen and (max-width: 700px) { + .row-card-no-pd [class*=col-] .card:after { + width: 0px !important; + } + .row-card-no-pd .card { + border-bottom-width: 1px; + } + .row-card-no-pd .card:last-child { + border-bottom-width: 0px; + } +} +@media screen and (min-width: 992px) { + .main-header .logo-header { + line-height: 52px; + } + + .sidebar .scroll-element { + opacity: 0; + transition: all .2s; + } + .sidebar:hover .scroll-element { + opacity: 1; + } +} +@media screen and (max-width: 991px) { + .sidebar { + position: fixed; + left: 0 !important; + right: 0; + -webkit-transform: translate3d(-270px, 0, 0); + -moz-transform: translate3d(-270px, 0, 0); + -o-transform: translate3d(-270px, 0, 0); + -ms-transform: translate3d(-270px, 0, 0); + transform: translate3d(-270px, 0, 0) !important; + transition: all .5s; + } + + .nav_open .sidebar { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0) !important; + } + + .sidebar .sidebar-wrapper { + padding-top: 0px; + } + + .nav_open { + overflow: hidden !important; + } + .nav_open .main-panel, .nav_open .main-header { + -webkit-transform: translate3d(260px, 0, 0); + -moz-transform: translate3d(260px, 0, 0); + -o-transform: translate3d(260px, 0, 0); + -ms-transform: translate3d(260px, 0, 0); + transform: translate3d(260px, 0, 0) !important; + } + + .main-header { + transition: all .5s; + } + + .main-panel { + width: 100%; + transition: all .5s; + } + .main-panel .content { + padding: 30px 10px; + } + + .main-header .logo-header { + display: flex; + width: 100% !important; + text-align: left; + position: relative; + justify-content: center; + } + .main-header .logo-header .navbar-toggler { + position: absolute; + top: auto; + height: 100%; + left: 15px; + opacity: 1; + } + .main-header .logo-header .more { + opacity: 1; + position: absolute; + right: 15px; + color: #545454; + cursor: pointer; + } + + .nav-search { + width: 100%; + margin-right: 0 !important; + margin-top: 12px; + } + + .navbar-header { + border-top: 1px solid #eee; + position: absolute; + width: 100%; + background: #ffffff; + transform: translate3d(0, -200px, 0) !important; + transition: all .5s; + } + + .topbar_open .navbar-header { + transform: translate3d(0, 54px, 0) !important; + border-bottom: 1px solid #eee; + } + .topbar_open .main-panel { + transform: translate3d(0, 125px, 0) !important; + } + + .nav_open.topbar_open .main-panel { + transform: translate3d(260px, 125px, 0) !important; + } + + .navbar-header .navbar-nav { + width: 100%; + flex-direction: row; + justify-content: center; + margin-left: 0px !important; + margin-top: 10px; + margin-bottom: 10px; + position: relative; + } + .navbar-header .navbar-nav .dropdown { + position: unset; + } + .navbar-header .navbar-nav .dropdown-menu { + position: absolute; + left: 0; + right: 0; + margin: 0 auto; + max-width: 280px; + } + + .profile-pic span { + display: none; + } +} + +/*# sourceMappingURL=ready.css.map */ diff --git a/public/assets/css/ready.css.map b/public/assets/css/ready.css.map new file mode 100644 index 0000000..7a76bff --- /dev/null +++ b/public/assets/css/ready.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../sass/ready.scss","../sass/ready/_background.scss","../sass/ready/_outlinefocus.scss","../sass/ready/_typography.scss","../sass/ready/_variables.scss","../sass/ready/plugins/_chartist.scss","../sass/ready/plugins/_jqueryui.scss","../sass/ready/plugins/_jqueryscrollbar.scss","../sass/ready/plugins/_toggle.scss","../sass/ready/_layouts.scss","../sass/ready/_line-awesome.scss","../sass/ready/components/_cards.scss","../sass/ready/components/_inputs.scss","../sass/ready/components/_tables.scss","../sass/ready/components/_navbars.scss","../sass/ready/components/_navsearch.scss","../sass/ready/components/_badges.scss","../sass/ready/components/_dropdowns.scss","../sass/ready/components/_charts.scss","../sass/ready/components/_alerts.scss","../sass/ready/components/_buttons.scss","../sass/ready/components/_navpills.scss","../sass/ready/components/_paginations.scss","../sass/ready/components/_sliders.scss","../sass/ready/components/_modals.scss","../sass/ready/components/_maps.scss","../sass/ready/_responsive.scss"], +"names": [], +"file": "ready.css" +} diff --git a/public/assets/css/ready.min.css b/public/assets/css/ready.min.css new file mode 100644 index 0000000..490fb31 --- /dev/null +++ b/public/assets/css/ready.min.css @@ -0,0 +1,15 @@ +/*! + + ========================================================= + * Ready Bootstrap Dashboard (Bootstrap 4) + ========================================================= + + * Product Page: http://www.themekita.com/ + * Copyright 2018 Theme Kita (http://www.themekita.com/) + * Licensed under MIT () + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */.ct-golden-section:before,.ct-major-eleventh:before,.ct-major-second:before,.ct-major-seventh:before,.ct-major-sixth:before,.ct-major-tenth:before,.ct-major-third:before,.ct-major-twelfth:before,.ct-minor-second:before,.ct-minor-seventh:before,.ct-minor-third:before,.ct-octave:before,.ct-perfect-fifth:before,.ct-perfect-fourth:before,.ct-square:before{height:0;content:"";float:left}.ct-golden-section:after,.ct-golden-section:before,.ct-major-eleventh:after,.ct-major-eleventh:before,.ct-major-second:after,.ct-major-second:before,.ct-major-seventh:after,.ct-major-seventh:before,.ct-major-sixth:after,.ct-major-sixth:before,.ct-major-tenth:after,.ct-major-tenth:before,.ct-major-third:after,.ct-major-third:before,.ct-major-twelfth:after,.ct-major-twelfth:before,.ct-minor-second:after,.ct-minor-second:before,.ct-minor-seventh:after,.ct-minor-seventh:before,.ct-minor-sixth:before,.ct-minor-third:after,.ct-minor-third:before,.ct-octave:after,.ct-octave:before,.ct-perfect-fifth:after,.ct-perfect-fifth:before,.ct-perfect-fourth:after,.ct-perfect-fourth:before,.ct-square:after,.ct-square:before{content:""}.chartist-tooltip,.ct-area,.ct-line,.ui-state-disabled{pointer-events:none}.sidebar .user .info a:focus,.sidebar .user .info a:hover,.ui-helper-reset{text-decoration:none}.mapael .zoomButton,.toggle-group{-webkit-user-select:none;-moz-user-select:none}.bg-default{background:#607D8B!important}.bg-primary{background:#1D62F0!important}.bg-info{background:#23CCEF!important}.bg-success{background:#59d05d!important}.bg-warning{background:#fbad4c!important}.bg-danger{background:#ff646d!important}:focus{outline:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.alert,.brand,.btn-simple,.h1,.h2,.h3,.h4,.h5,.h6,.navbar,.td-name,a,body,button.close,h1,h2,h3,h4,h5,h6,p,td{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:nunito,sans-serif}body{font-size:14px;color:#575962}.h1,h1{font-size:59px}.h2,h2{font-size:43px}.h3,h3{font-size:35px;margin:20px 0 10px}.h4,h4{font-size:28px;line-height:30px}.h5,h5{font-size:25px;margin-bottom:15px}.h6,h6{font-size:18px;font-weight:600}p{font-size:15px;line-height:1.5;margin-bottom:.7rem}h4.page-title{font-size:22px;font-weight:600;color:#333;line-height:30px;margin-bottom:20px}.text-primary,.text-primary:hover{color:#1D62F0!important}.text-info,.text-info:hover{color:#23CCEF!important}.text-success,.text-success:hover{color:#59d05d!important}.text-warning,.text-warning:hover{color:#fbad4c!important}.text-danger,.text-danger:hover{color:#ff646d!important}label{color:#3f4047!important;font-size:14px!important}.fw-light{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-mediumbold{font-weight:500!important}.fw-bold{font-weight:600!important}.fw-extrabold{font-weight:800!important}.ct-label{fill:rgba(0,0,0,.5);color:rgba(0,0,0,.5);font-size:.8rem;line-height:1}.ct-grid-background,.ct-line{fill:none}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-point{stroke-width:7px;stroke-linecap:round}.ct-line{stroke-width:3px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#1D62F0}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#1D62F0}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#ff646d}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#ff646d}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#fbad4c}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#fbad4c}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#9368E9}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#9368E9}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#87CB16}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#87CB16}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;width:0;padding-bottom:100%}.ct-square:after{display:table;clear:both}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;width:0;padding-bottom:93.75%}.ct-minor-second:after{display:table;clear:both}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;width:0;padding-bottom:88.8888888889%}.ct-major-second:after{display:table;clear:both}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;width:0;padding-bottom:83.3333333333%}.ct-minor-third:after{display:table;clear:both}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;width:0;padding-bottom:80%}.ct-major-third:after{display:table;clear:both}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;width:0;padding-bottom:75%}.ct-perfect-fourth:after{display:table;clear:both}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;width:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{display:table;clear:both}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{content:"";display:table;clear:both}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;width:0;padding-bottom:61.804697157%}.ct-golden-section:after{display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;width:0;padding-bottom:60%}.ct-major-sixth:after{display:table;clear:both}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;width:0;padding-bottom:56.25%}.ct-minor-seventh:after{display:table;clear:both}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;width:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{display:table;clear:both}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;width:0;padding-bottom:50%}.ct-octave:after{display:table;clear:both}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;width:0;padding-bottom:40%}.ct-major-tenth:after{display:table;clear:both}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;width:0;padding-bottom:37.5%}.ct-major-eleventh:after{display:table;clear:both}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;width:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{display:table;clear:both}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.chartist-tooltip:before,.ct-double-octave:before{width:0;height:0;content:""}.ct-double-octave:before{display:block;float:left;padding-bottom:25%}.ct-double-octave:after{content:"";display:table;clear:both}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0}.chartist-tooltip{position:absolute;display:inline-block;opacity:0;min-width:3em;padding:.25em;background:rgba(0,0,0,.77);color:#fff;font-weight:600;text-align:center;z-index:1;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.chartist-tooltip:before{position:absolute;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.77)}.chartist-tooltip-value{font-size:14px}.chartist-tooltip.tooltip-show{opacity:1}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-slider{position:relative;text-align:left;background:#ddd}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.4em}.ui-slider-horizontal .ui-slider-handle{top:-.4em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-slider-handle,.ui-slider-handle:focus{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f7f7f7));background:-webkit-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-o-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-ms-linear-gradient(top,#fff 0,#f7f7f7 100%);background:linear-gradient(to bottom,#fff 0,#f7f7f7 100%);border-radius:50px;box-shadow:0 1px 4px 0 #9191ab!important}.scroll-wrapper{overflow:hidden!important;padding:0!important;position:relative}.scroll-wrapper>.scroll-content{border:none!important;box-sizing:content-box!important;height:auto;left:0;margin:0;max-height:none;max-width:none!important;overflow:scroll!important;padding:0;position:relative!important;top:0;width:auto!important}.scroll-element,.scroll-element div{box-sizing:content-box}.scroll-wrapper>.scroll-content::-webkit-scrollbar{height:0;width:0}.scroll-element{display:none}.scroll-element.scroll-x.scroll-scrollx_visible,.scroll-element.scroll-y.scroll-scrolly_visible{display:block}.scroll-element .scroll-arrow,.scroll-element .scroll-bar{cursor:default}.scroll-textarea{border:1px solid #ccc;border-top-color:#999}.scroll-textarea>.scroll-content{overflow:hidden!important}.scroll-textarea>.scroll-content>textarea{border:none!important;box-sizing:border-box;height:100%!important;margin:0;max-height:none!important;max-width:none!important;overflow:scroll!important;outline:0;padding:2px;position:relative!important;top:0;width:100%!important}.scrollbar-inner>.scroll-element,.scrollbar-inner>.scroll-element div,.scrollbar-outer>.scroll-element,.scrollbar-outer>.scroll-element div{margin:0;padding:0;position:absolute;z-index:10}.scrollbar-inner>.scroll-element .scroll-element_outer,.scrollbar-outer>.scroll-element .scroll-element_outer{overflow:hidden}.scroll-textarea>.scroll-content>textarea::-webkit-scrollbar{height:0;width:0}.scrollbar-inner>.scroll-element{border:none}.scrollbar-inner>.scroll-element div{border:none;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-inner>.scroll-element.scroll-x{bottom:2px;height:8px;left:0;width:100%}.scrollbar-inner>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-inner>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-12px}.scrollbar-inner>.scroll-element.scroll-y{height:100%;right:2px;top:0;width:8px}.scrollbar-inner>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-inner>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-12px}.scrollbar-inner>.scroll-element .scroll-bar,.scrollbar-inner>.scroll-element .scroll-element_outer,.scrollbar-inner>.scroll-element .scroll-element_track{-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.scrollbar-inner>.scroll-element .scroll-bar{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);opacity:.4}.scrollbar-inner>.scroll-element .scroll-element_track{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);opacity:.4;background-color:#e0e0e0}.scrollbar-inner>.scroll-element .scroll-bar{background-color:#c2c2c2}.scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#919191}.scrollbar-outer>.scroll-element{border:none;background-color:#fff}.scrollbar-outer>.scroll-element div{border:none;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-outer>.scroll-element.scroll-x{bottom:0;height:12px;left:0;width:100%}.scrollbar-outer>.scroll-element.scroll-y{height:100%;right:0;top:0;width:12px}.scrollbar-outer>.scroll-element.scroll-x .scroll-element_outer{height:8px;top:2px}.scrollbar-outer>.scroll-element.scroll-y .scroll-element_outer{left:2px;width:8px}.scrollbar-outer>.scroll-element .scroll-element_track{background-color:#eee}.scrollbar-outer>.scroll-element .scroll-bar,.scrollbar-outer>.scroll-element .scroll-element_outer,.scrollbar-outer>.scroll-element .scroll-element_track{-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.scrollbar-outer>.scroll-element .scroll-bar{background-color:#d9d9d9}.scrollbar-outer>.scroll-element .scroll-bar:hover{background-color:#c2c2c2}.scrollbar-outer>.scroll-element.scroll-draggable .scroll-bar{background-color:#919191}.scrollbar-outer>.scroll-content.scroll-scrolly_visible{left:-12px;margin-left:12px}.scrollbar-outer>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-outer>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-14px}.scrollbar-outer>.scroll-content.scroll-scrollx_visible{top:-12px;margin-top:12px}.scrollbar-macosx>.scroll-element,.scrollbar-macosx>.scroll-element div{background:0 0;border:none;margin:0;padding:0;position:absolute;z-index:10}.scrollbar-outer>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-outer>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-14px}.scrollbar-outer>.scroll-element.scroll-x .scroll-bar{min-width:10px}.scrollbar-outer>.scroll-element.scroll-y .scroll-bar{min-height:10px}.scrollbar-macosx>.scroll-element div{display:block;height:100%;left:0;top:0;width:100%}.scrollbar-macosx>.scroll-element .scroll-element_track{display:none}.scrollbar-macosx>.scroll-element .scroll-bar{background-color:#6C6E71;display:block;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;-ms-transition:opacity .2s linear;transition:opacity .2s linear}.scrollbar-macosx:hover>.scroll-element .scroll-bar,.scrollbar-macosx>.scroll-element.scroll-draggable .scroll-bar{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70);opacity:.7}.scrollbar-macosx>.scroll-element.scroll-x{bottom:0;height:0;left:0;min-width:100%;overflow:visible;width:100%}.scrollbar-light>.scroll-element,.scrollbar-light>.scroll-element div{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10}.scrollbar-macosx>.scroll-element.scroll-y{height:100%;min-height:100%;right:0;top:0;width:0}.scrollbar-macosx>.scroll-element.scroll-x .scroll-bar{height:7px;min-width:10px;top:-9px}.scrollbar-macosx>.scroll-element.scroll-y .scroll-bar{left:-9px;min-height:10px;width:7px}.scrollbar-macosx>.scroll-element.scroll-x .scroll-element_outer{left:2px}.scrollbar-macosx>.scroll-element.scroll-x .scroll-element_size{left:-4px}.scrollbar-macosx>.scroll-element.scroll-y .scroll-element_outer{top:2px}.scrollbar-macosx>.scroll-element.scroll-y .scroll-element_size{top:-4px}.scrollbar-macosx>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size{left:-11px}.scrollbar-macosx>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size{top:-11px}.scrollbar-light>.scroll-element{background-color:#fff}.scrollbar-light>.scroll-element div{display:block;height:100%;left:0;top:0;width:100%}.scrollbar-light>.scroll-element .scroll-element_outer{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.scrollbar-light>.scroll-element .scroll-element_size{background:-moz-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#dbdbdb),color-stop(100%,#e8e8e8));background:-webkit-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:-o-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:-ms-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:linear-gradient(to right,#dbdbdb 0,#e8e8e8 100%);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.scrollbar-light>.scroll-element.scroll-x{bottom:0;height:17px;left:0;min-width:100%;width:100%}.scrollbar-light>.scroll-element.scroll-y{height:100%;min-height:100%;right:0;top:0;width:17px}.scrollbar-light>.scroll-element .scroll-bar{background:-moz-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#fefefe),color-stop(100%,#f5f5f5));background:-webkit-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:-o-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:-ms-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:linear-gradient(to right,#fefefe 0,#f5f5f5 100%);border:1px solid #dbdbdb;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.scrollbar-light>.scroll-content.scroll-scrolly_visible{left:-17px;margin-left:17px}.scrollbar-light>.scroll-content.scroll-scrollx_visible{top:-17px;margin-top:17px}.scrollbar-rail>.scroll-element,.scrollbar-rail>.scroll-element div{border:none;margin:0;padding:0;position:absolute;z-index:10;overflow:hidden}.scrollbar-light>.scroll-element.scroll-x .scroll-bar{height:10px;min-width:10px;top:0}.scrollbar-light>.scroll-element.scroll-y .scroll-bar{left:0;min-height:10px;width:10px}.scrollbar-light>.scroll-element.scroll-x .scroll-element_outer{height:12px;left:2px;top:2px}.scrollbar-light>.scroll-element.scroll-x .scroll-element_size{left:-4px}.scrollbar-light>.scroll-element.scroll-y .scroll-element_outer{left:2px;top:2px;width:12px}.scrollbar-light>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-light>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-19px}.scrollbar-light>.scroll-element.scroll-y .scroll-element_size{top:-4px}.scrollbar-light>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-light>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-19px}.scrollbar-rail>.scroll-element{background-color:#fff}.scrollbar-rail>.scroll-element div{display:block;height:100%;left:0;top:0;width:100%}.scrollbar-rail>.scroll-element .scroll-element_size{background-color:#999;background-color:rgba(0,0,0,.3)}.scrollbar-rail>.scroll-element .scroll-element_outer:hover .scroll-element_size{background-color:#666;background-color:rgba(0,0,0,.5)}.scrollbar-rail>.scroll-element.scroll-x{bottom:0;height:12px;left:0;min-width:100%;padding:3px 0 2px;width:100%}.scrollbar-rail>.scroll-element.scroll-y{height:100%;min-height:100%;padding:0 2px 0 3px;right:0;top:0;width:12px}.scrollbar-rail>.scroll-element .scroll-bar{background-color:#d0b9a0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.5)}.scrollbar-rail>.scroll-element .scroll-element_outer:hover .scroll-bar{box-shadow:1px 1px 3px rgba(0,0,0,.6)}.scrollbar-rail>.scroll-content.scroll-scrolly_visible{left:-17px;margin-left:17px}.scrollbar-rail>.scroll-content.scroll-scrollx_visible{margin-top:17px;top:-17px}.scrollbar-dynamic>.scroll-element,.scrollbar-dynamic>.scroll-element div{background:0 0;border:none;margin:0;padding:0;position:absolute;z-index:10}.scrollbar-rail>.scroll-element.scroll-x .scroll-bar{height:10px;min-width:10px;top:1px}.scrollbar-rail>.scroll-element.scroll-y .scroll-bar{left:1px;min-height:10px;width:10px}.scrollbar-rail>.scroll-element.scroll-x .scroll-element_outer{height:15px;left:5px}.scrollbar-rail>.scroll-element.scroll-x .scroll-element_size{height:2px;left:-10px;top:5px}.scrollbar-rail>.scroll-element.scroll-y .scroll-element_outer{top:5px;width:15px}.scrollbar-rail>.scroll-element.scroll-y .scroll-element_size{left:5px;top:-10px;width:2px}.scrollbar-rail>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-rail>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-25px}.scrollbar-rail>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-rail>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-25px}.scrollbar-dynamic>.scroll-element div{display:block;height:100%;left:0;top:0;width:100%}.scrollbar-dynamic>.scroll-element.scroll-x{bottom:2px;height:7px;left:0;min-width:100%;width:100%}.scrollbar-dynamic>.scroll-element.scroll-y{height:100%;min-height:100%;right:2px;top:0;width:7px}.scrollbar-dynamic>.scroll-element .scroll-element_outer{opacity:.3;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px}.scrollbar-dynamic>.scroll-element .scroll-element_size{background-color:#ccc;opacity:0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;-ms-transition:opacity .2s;transition:opacity .2s}.scrollbar-dynamic>.scroll-element .scroll-bar{background-color:#6c6e71;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.scrollbar-dynamic>.scroll-element.scroll-x .scroll-bar{bottom:0;height:7px;min-width:24px;top:auto}.scrollbar-dynamic>.scroll-element.scroll-y .scroll-bar{left:auto;min-height:24px;right:0;width:7px}.scrollbar-dynamic>.scroll-element.scroll-x .scroll-element_outer{bottom:0;top:auto;left:2px;-webkit-transition:height .2s;-moz-transition:height .2s;-o-transition:height .2s;-ms-transition:height .2s;transition:height .2s}.scrollbar-dynamic>.scroll-element.scroll-y .scroll-element_outer{left:auto;right:0;top:2px;-webkit-transition:width .2s;-moz-transition:width .2s;-o-transition:width .2s;-ms-transition:width .2s;transition:width .2s}.scrollbar-dynamic>.scroll-element.scroll-x .scroll-element_size{left:-4px}.scrollbar-dynamic>.scroll-element.scroll-y .scroll-element_size{top:-4px}.scrollbar-dynamic>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size{left:-11px}.scrollbar-dynamic>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size{top:-11px}.scrollbar-dynamic>.scroll-element.scroll-draggable .scroll-element_outer,.scrollbar-dynamic>.scroll-element:hover .scroll-element_outer{overflow:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70);opacity:.7}.scrollbar-dynamic>.scroll-element.scroll-draggable .scroll-element_outer .scroll-element_size,.scrollbar-dynamic>.scroll-element:hover .scroll-element_outer .scroll-element_size{opacity:1}.scrollbar-dynamic>.scroll-element.scroll-draggable .scroll-element_outer .scroll-bar,.scrollbar-dynamic>.scroll-element:hover .scroll-element_outer .scroll-bar{height:100%;width:100%;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px}.scrollbar-chrome>.scroll-element,.scrollbar-chrome>.scroll-element div{border:none;margin:0;padding:0;position:absolute;z-index:10;overflow:hidden}.scrollbar-dynamic>.scroll-element.scroll-x.scroll-draggable .scroll-element_outer,.scrollbar-dynamic>.scroll-element.scroll-x:hover .scroll-element_outer{height:20px;min-height:7px}.scrollbar-dynamic>.scroll-element.scroll-y.scroll-draggable .scroll-element_outer,.scrollbar-dynamic>.scroll-element.scroll-y:hover .scroll-element_outer{min-width:7px;width:20px}.scrollbar-chrome>.scroll-element{background-color:#fff}.scrollbar-chrome>.scroll-element div{display:block;height:100%;left:0;top:0;width:100%}.scrollbar-chrome>.scroll-element .scroll-element_track{background:#f1f1f1;border:1px solid #dbdbdb}.scrollbar-chrome>.scroll-element.scroll-x{bottom:0;height:16px;left:0;min-width:100%;width:100%}.scrollbar-chrome>.scroll-element.scroll-y{height:100%;min-height:100%;right:0;top:0;width:16px}.scrollbar-chrome>.scroll-element .scroll-bar{background-color:#d9d9d9;border:1px solid #bdbdbd;cursor:default;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.scrollbar-chrome>.scroll-element .scroll-bar:hover{background-color:#c2c2c2;border-color:#a9a9a9}.scrollbar-chrome>.scroll-element.scroll-draggable .scroll-bar{background-color:#919191;border-color:#7e7e7e}.scrollbar-chrome>.scroll-content.scroll-scrolly_visible{left:-16px;margin-left:16px}.scrollbar-chrome>.scroll-content.scroll-scrollx_visible{top:-16px;margin-top:16px}.scrollbar-chrome>.scroll-element.scroll-x .scroll-bar{height:8px;min-width:10px;top:3px}.scrollbar-chrome>.scroll-element.scroll-y .scroll-bar{left:3px;min-height:10px;width:8px}.scrollbar-chrome>.scroll-element.scroll-x .scroll-element_outer{border-left:1px solid #dbdbdb}.scrollbar-chrome>.scroll-element.scroll-x .scroll-element_track{height:14px;left:-3px}.scrollbar-chrome>.scroll-element.scroll-x .scroll-element_size{height:14px;left:-4px}.scrollbar-chrome>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-chrome>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-19px}.scrollbar-chrome>.scroll-element.scroll-y .scroll-element_outer{border-top:1px solid #dbdbdb}.scrollbar-chrome>.scroll-element.scroll-y .scroll-element_track{top:-3px;width:14px}.scrollbar-chrome>.scroll-element.scroll-y .scroll-element_size{top:-4px;width:14px}.scrollbar-chrome>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-chrome>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-19px}.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px}.toggle{position:relative;overflow:hidden}.toggle-group,.toggle-off,.toggle-on{position:absolute;top:0;bottom:0}.toggle input[type=checkbox]{display:none}.toggle-group{width:200%;left:0;transition:left .35s;-webkit-transition:left .35s}.toggle.off .toggle-group{left:-100%}.toggle-on{left:0;right:50%;margin:0;border:0;border-radius:0}.toggle-off{left:50%;right:0;margin:0;border:0;border-radius:0}.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}.toggle.btn{min-width:59px;min-height:34px}.toggle-on.btn{padding-right:24px}.toggle-off.btn{padding-left:24px}.toggle.btn-lg{min-width:79px;min-height:45px}.toggle-on.btn-lg{padding-right:31px}.toggle-off.btn-lg{padding-left:31px}.toggle-handle.btn-lg{width:40px}.toggle.btn-sm{min-width:50px;min-height:30px}.toggle-on.btn-sm{padding-right:20px}.toggle-off.btn-sm{padding-left:20px}.toggle.btn-xs{min-width:35px;min-height:22px}.wrapper,body{min-height:100vh;position:relative}.toggle-on.btn-xs{padding-right:12px}.toggle-off.btn-xs{padding-left:12px}.wrapper{top:0;height:100vh}.main-header{min-height:55px;width:100%;background:#fff;position:fixed;z-index:1001;border-bottom:1px solid #eee}.main-header .logo-header{float:left;width:260px;height:55px;line-height:55px;border-right:1px solid #eee;color:#333;font-size:18px;font-weight:600;padding-left:25px;padding-right:25px;z-index:1001;display:inline-block}.main-header .logo-header a.logo{color:#575962}.main-header .logo-header .navbar-toggler{padding-left:0;padding-right:0;opacity:0}.main-header .logo-header .navbar-toggler .navbar-toggler-icon{background:url(../img/menu2.png);background-size:cover;height:1em;width:1em;opacity:.8}.main-header .logo-header .more{background:0 0;border:0;font-size:26px;padding:0;opacity:0}.sidebar{position:fixed;top:0;bottom:0;left:0;width:260px;display:block;z-index:1;color:#fff;font-weight:200;background:center center #fff;background-size:cover;border-right:1px solid #eee;box-shadow:6px 1px 20px rgba(69,65,78,.1)}.sidebar .user{margin-top:12.5px;padding-left:25px;padding-right:25px;padding-bottom:12.5px;border-bottom:1px solid #eee;display:block}.sidebar .user .photo{width:40px;height:40px;overflow:hidden;float:left;margin-right:11px;z-index:5;border-radius:50%}.sidebar .user .photo img{width:100%;height:100%}.sidebar .user .info a{white-space:nowrap;display:block;position:relative}.sidebar .user .info a>span{font-size:14px;font-weight:600;color:#777;letter-spacing:.04em;display:flex;flex-direction:column}.sidebar .user .info a>span .user-level{color:#555;font-weight:700;font-size:13px;letter-spacing:.05em;margin-top:5px}.sidebar .user .info a .link-collapse{padding:7px 0}.sidebar .user .info .caret{position:absolute;top:17px;right:0;border-top-color:#777}.sidebar .sidebar-wrapper{position:relative;max-height:calc(100vh - 75px);min-height:100%;overflow:auto;width:260px;z-index:4;padding-top:55px;padding-bottom:100px}.sidebar .nav{display:block;float:none;margin-top:20px}.sidebar .nav .nav-item{display:list-item}.sidebar .nav .nav-item.active a{color:#575962;font-weight:700}.sidebar .nav .nav-item.active a:before,.sidebar .nav .nav-item.active:hover a:before{background:#1d7af3;opacity:1!important;position:absolute;z-index:1;width:3px;height:100%;content:'';left:0;top:0}.sidebar .nav .nav-item.active a i{color:#4d7cfe}.sidebar .nav .nav-item a{display:flex;align-items:center;color:#83848a;padding:13px 25px;width:100%;font-size:14px;font-weight:600;position:relative;margin-bottom:5px}.sidebar .nav .nav-item a:focus,.sidebar .nav .nav-item a:hover{text-decoration:none;background:#fbfbfb}.sidebar .nav .nav-item:hover a:before{background:#1d7af3;opacity:.7;position:absolute;z-index:1;width:3px;height:100%;content:'';left:0;top:0}.la-ul>li,.main-panel{position:relative}.sidebar .nav .nav-item a i{font-size:23px;color:#C3C5CA;margin-right:15px;width:25px;text-align:center;vertical-align:middle;float:left}.main-panel,.pull-right{float:right}.sidebar .nav .nav-item a p{font-size:14px;margin-bottom:0;letter-spacing:.04em;margin-right:5px}.main-panel{width:calc(100% - 260px);min-height:100%;background:#f2f3f8}.main-panel .content{padding:30px 15px;min-height:calc(100% - 123px);margin-top:55px}.footer{border-top:1px solid #eee;padding:15px;background:#fff}.footer .container-fluid{display:flex;align-items:center}.la,.la-stack{display:inline-block}.la-fw,.la-li{text-align:center}@font-face{font-family:LineAwesome;src:url(../fonts/line-awesome.eot?v=1.1.);src:url(../fonts/line-awesome.eot??v=1.1.#iefix) format("embedded-opentype"),url(../fonts/line-awesome.woff2?v=1.1.) format("woff2"),url(../fonts/line-awesome.woff?v=1.1.) format("woff"),url(../fonts/line-awesome.ttf?v=1.1.) format("truetype"),url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg");font-weight:400;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:LineAwesome;src:url(../fonts/line-awesome.svg?v=1.1.#fa) format("svg")}}.la{font:normal normal normal 16px/1 LineAwesome;font-size:inherit;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-smoothing:antialiased}.la-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.la-2x{font-size:2em}.la-3x{font-size:3em}.la-4x{font-size:4em}.la-5x{font-size:5em}.la-fw{width:1.28571429em}.la-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.la-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.la-li.la-lg{left:-1.85714286em}.la-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-left{float:left}.li.pull-left{margin-right:.3em}.li.pull-right{margin-left:.3em}.la-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.la-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.la-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.la-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.la-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.la-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .la-flip-horizontal,:root .la-flip-vertical,:root .la-rotate-180,:root .la-rotate-270,:root .la-rotate-90{filter:none}.la-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.la-stack-1x,.la-stack-2x{position:absolute;left:0;width:100%;text-align:center}.la-stack-1x{line-height:inherit}.la-stack-2x{font-size:2em}.la-inverse{color:#fff}.la-500px:before{content:"\f100"}.la-adjust:before{content:"\f101"}.la-adn:before{content:"\f102"}.la-align-center:before{content:"\f103"}.la-align-justify:before{content:"\f104"}.la-align-left:before{content:"\f105"}.la-align-right:before{content:"\f106"}.la-amazon:before{content:"\f107"}.la-ambulance:before{content:"\f108"}.la-anchor:before{content:"\f109"}.la-android:before{content:"\f10a"}.la-angellist:before{content:"\f10b"}.la-angle-double-down:before{content:"\f10c"}.la-angle-double-left:before{content:"\f10d"}.la-angle-double-right:before{content:"\f10e"}.la-angle-double-up:before{content:"\f10f"}.la-angle-down:before{content:"\f110"}.la-angle-left:before{content:"\f111"}.la-angle-right:before{content:"\f112"}.la-angle-up:before{content:"\f113"}.la-apple:before{content:"\f114"}.la-archive:before{content:"\f115"}.la-area-chart:before{content:"\f116"}.la-arrow-circle-down:before{content:"\f117"}.la-arrow-circle-left:before{content:"\f118"}.la-arrow-circle-o-down:before{content:"\f119"}.la-arrow-circle-o-left:before{content:"\f11a"}.la-arrow-circle-o-right:before{content:"\f11b"}.la-arrow-circle-o-up:before{content:"\f11c"}.la-arrow-circle-right:before{content:"\f11d"}.la-arrow-circle-up:before{content:"\f11e"}.la-arrow-down:before{content:"\f11f"}.la-arrow-left:before{content:"\f120"}.la-arrow-right:before{content:"\f121"}.la-arrow-up:before{content:"\f122"}.la-arrows:before{content:"\f123"}.la-arrows-alt:before{content:"\f124"}.la-arrows-h:before{content:"\f125"}.la-arrows-v:before{content:"\f126"}.la-asterisk:before{content:"\f127"}.la-at:before{content:"\f128"}.la-automobile:before{content:"\f129"}.la-backward:before{content:"\f12a"}.la-balance-scale:before{content:"\f12b"}.la-ban:before{content:"\f12c"}.la-bank:before{content:"\f12d"}.la-bar-chart:before{content:"\f12e"}.la-bar-chart-o:before{content:"\f12f"}.la-barcode:before{content:"\f130"}.la-bars:before{content:"\f131"}.la-battery-0:before{content:"\f132"}.la-battery-1:before{content:"\f133"}.la-battery-2:before{content:"\f134"}.la-battery-3:before{content:"\f135"}.la-battery-4:before{content:"\f136"}.la-battery-empty:before{content:"\f137"}.la-battery-full:before{content:"\f138"}.la-battery-half:before{content:"\f139"}.la-battery-quarter:before{content:"\f13a"}.la-battery-three-quarters:before{content:"\f13b"}.la-bed:before{content:"\f13c"}.la-beer:before{content:"\f13d"}.la-behance:before{content:"\f13e"}.la-behance-square:before{content:"\f13f"}.la-bell:before{content:"\f140"}.la-bell-o:before{content:"\f141"}.la-bell-slash:before{content:"\f142"}.la-bell-slash-o:before{content:"\f143"}.la-bicycle:before{content:"\f144"}.la-binoculars:before{content:"\f145"}.la-birthday-cake:before{content:"\f146"}.la-bitbucket:before{content:"\f147"}.la-bitbucket-square:before{content:"\f148"}.la-bitcoin:before{content:"\f149"}.la-black-tie:before{content:"\f14a"}.la-bold:before{content:"\f14b"}.la-bolt:before{content:"\f14c"}.la-bomb:before{content:"\f14d"}.la-book:before{content:"\f14e"}.la-bookmark:before{content:"\f14f"}.la-bookmark-o:before{content:"\f150"}.la-briefcase:before{content:"\f151"}.la-btc:before{content:"\f152"}.la-bug:before{content:"\f153"}.la-building:before{content:"\f154"}.la-building-o:before{content:"\f155"}.la-bullhorn:before{content:"\f156"}.la-bullseye:before{content:"\f157"}.la-bus:before{content:"\f158"}.la-buysellads:before{content:"\f159"}.la-cab:before{content:"\f15a"}.la-calculator:before{content:"\f15b"}.la-calendar:before{content:"\f15c"}.la-calendar-check-o:before{content:"\f15d"}.la-calendar-minus-o:before{content:"\f15e"}.la-calendar-o:before{content:"\f15f"}.la-calendar-plus-o:before{content:"\f160"}.la-calendar-times-o:before{content:"\f161"}.la-camera:before{content:"\f162"}.la-camera-retro:before{content:"\f163"}.la-car:before{content:"\f164"}.la-caret-down:before{content:"\f165"}.la-caret-left:before{content:"\f166"}.la-caret-right:before{content:"\f167"}.la-caret-square-o-down:before,.la-toggle-down:before{content:"\f168"}.la-caret-square-o-left:before,.la-toggle-left:before{content:"\f169"}.la-caret-square-o-right:before,.la-toggle-right:before{content:"\f16a"}.la-caret-square-o-up:before,.la-toggle-up:before{content:"\f16b"}.la-caret-up:before{content:"\f16c"}.la-cart-arrow-down:before{content:"\f16d"}.la-cart-plus:before{content:"\f16e"}.la-cc:before{content:"\f16f"}.la-cc-amex:before{content:"\f170"}.la-cc-diners-club:before{content:"\f171"}.la-cc-discover:before{content:"\f172"}.la-cc-jcb:before{content:"\f173"}.la-cc-mastercard:before{content:"\f174"}.la-cc-paypal:before{content:"\f175"}.la-cc-stripe:before{content:"\f176"}.la-cc-visa:before{content:"\f177"}.la-certificate:before{content:"\f178"}.la-chain:before{content:"\f179"}.la-chain-broken:before{content:"\f17a"}.la-check:before{content:"\f17b"}.la-check-circle:before{content:"\f17c"}.la-check-circle-o:before{content:"\f17d"}.la-check-square:before{content:"\f17e"}.la-check-square-o:before{content:"\f17f"}.la-chevron-circle-down:before{content:"\f180"}.la-chevron-circle-left:before{content:"\f181"}.la-chevron-circle-right:before{content:"\f182"}.la-chevron-circle-up:before{content:"\f183"}.la-chevron-down:before{content:"\f184"}.la-chevron-left:before{content:"\f185"}.la-chevron-right:before{content:"\f186"}.la-chevron-up:before{content:"\f187"}.la-child:before{content:"\f188"}.la-chrome:before{content:"\f189"}.la-circle:before{content:"\f18a"}.la-circle-o:before{content:"\f18b"}.la-circle-o-notch:before{content:"\f18c"}.la-circle-thin:before{content:"\f18d"}.la-clipboard:before{content:"\f18e"}.la-clock-o:before{content:"\f18f"}.la-clone:before{content:"\f190"}.la-close:before{content:"\f191"}.la-cloud:before{content:"\f192"}.la-cloud-download:before{content:"\f193"}.la-cloud-upload:before{content:"\f194"}.la-cny:before{content:"\f195"}.la-code:before{content:"\f196"}.la-code-fork:before{content:"\f197"}.la-codepen:before{content:"\f198"}.la-coffee:before{content:"\f199"}.la-cog:before{content:"\f19a"}.la-cogs:before{content:"\f19b"}.la-columns:before{content:"\f19c"}.la-comment:before{content:"\f19d"}.la-comment-o:before{content:"\f19e"}.la-commenting:before{content:"\f19f"}.la-commenting-o:before{content:"\f1a0"}.la-comments:before{content:"\f1a1"}.la-comments-o:before{content:"\f1a2"}.la-compass:before{content:"\f1a3"}.la-compress:before{content:"\f1a4"}.la-connectdevelop:before{content:"\f1a5"}.la-contao:before{content:"\f1a6"}.la-copy:before{content:"\f1a7"}.la-copyright:before{content:"\f1a8"}.la-creative-commons:before{content:"\f1a9"}.la-credit-card:before{content:"\f1aa"}.la-crop:before{content:"\f1ab"}.la-crosshairs:before{content:"\f1ac"}.la-css3:before{content:"\f1ad"}.la-cube:before{content:"\f1ae"}.la-cubes:before{content:"\f1af"}.la-cut:before{content:"\f1b0"}.la-cutlery:before{content:"\f1b1"}.la-dashboard:before{content:"\f1b2"}.la-dashcube:before{content:"\f1b3"}.la-database:before{content:"\f1b4"}.la-dedent:before{content:"\f1b5"}.la-delicious:before{content:"\f1b6"}.la-desktop:before{content:"\f1b7"}.la-deviantart:before{content:"\f1b8"}.la-diamond:before{content:"\f1b9"}.la-digg:before{content:"\f1ba"}.la-dollar:before{content:"\f1bb"}.la-dot-circle-o:before{content:"\f1bc"}.la-download:before{content:"\f1bd"}.la-dribbble:before{content:"\f1be"}.la-dropbox:before{content:"\f1bf"}.la-drupal:before{content:"\f1c0"}.la-edit:before{content:"\f1c1"}.la-eject:before{content:"\f1c2"}.la-ellipsis-h:before{content:"\f1c3"}.la-ellipsis-v:before{content:"\f1c4"}.la-empire:before,.la-ge:before{content:"\f1c5"}.la-envelope:before{content:"\f1c6"}.la-envelope-o:before{content:"\f1c7"}.la-envelope-square:before{content:"\f1c8"}.la-eraser:before{content:"\f1c9"}.la-eur:before{content:"\f1ca"}.la-euro:before{content:"\f1cb"}.la-exchange:before{content:"\f1cc"}.la-exclamation:before{content:"\f1cd"}.la-exclamation-circle:before{content:"\f1ce"}.la-exclamation-triangle:before{content:"\f1cf"}.la-expand:before{content:"\f1d0"}.la-expeditedssl:before{content:"\f1d1"}.la-external-link:before{content:"\f1d2"}.la-external-link-square:before{content:"\f1d3"}.la-eye:before{content:"\f1d4"}.la-eye-slash:before{content:"\f1d5"}.la-eyedropper:before{content:"\f1d6"}.la-facebook-f:before,.la-facebook:before{content:"\f1d7"}.la-facebook-official:before{content:"\f1d8"}.la-facebook-square:before{content:"\f1d9"}.la-fast-backward:before{content:"\f1da"}.la-fast-forward:before{content:"\f1db"}.la-fax:before{content:"\f1dc"}.la-female:before{content:"\f1dd"}.la-fighter-jet:before{content:"\f1de"}.la-file:before{content:"\f1df"}.la-file-archive-o:before{content:"\f1e0"}.la-file-audio-o:before{content:"\f1e1"}.la-file-code-o:before{content:"\f1e2"}.la-file-excel-o:before{content:"\f1e3"}.la-file-image-o:before{content:"\f1e4"}.la-file-movie-o:before{content:"\f1e5"}.la-file-o:before{content:"\f1e6"}.la-file-pdf-o:before{content:"\f1e7"}.la-file-photo-o:before{content:"\f1e8"}.la-file-picture-o:before{content:"\f1e9"}.la-file-powerpoint-o:before{content:"\f1ea"}.la-file-sound-o:before{content:"\f1eb"}.la-file-text:before{content:"\f1ec"}.la-file-text-o:before{content:"\f1ed"}.la-file-video-o:before{content:"\f1ee"}.la-file-word-o:before{content:"\f1ef"}.la-file-zip-o:before{content:"\f1f0"}.la-files-o:before{content:"\f1f1"}.la-film:before{content:"\f1f2"}.la-filter:before{content:"\f1f3"}.la-fire:before{content:"\f1f4"}.la-fire-extinguisher:before{content:"\f1f5"}.la-firefox:before{content:"\f1f6"}.la-flag:before{content:"\f1f7"}.la-flag-checkered:before{content:"\f1f8"}.la-flag-o:before{content:"\f1f9"}.la-flash:before{content:"\f1fa"}.la-flask:before{content:"\f1fb"}.la-flickr:before{content:"\f1fc"}.la-floppy-o:before{content:"\f1fd"}.la-folder:before{content:"\f1fe"}.la-folder-o:before{content:"\f1ff"}.la-folder-open:before{content:"\f200"}.la-folder-open-o:before{content:"\f201"}.la-font:before{content:"\f202"}.la-fonticons:before{content:"\f203"}.la-forumbee:before{content:"\f204"}.la-forward:before{content:"\f205"}.la-foursquare:before{content:"\f206"}.la-frown-o:before{content:"\f207"}.la-futbol-o:before,.la-soccer-ball-o:before{content:"\f208"}.la-gamepad:before{content:"\f209"}.la-gavel:before{content:"\f20a"}.la-gbp:before{content:"\f20b"}.la-gear:before{content:"\f20c"}.la-gears:before{content:"\f20d"}.la-genderless:before{content:"\f20e"}.la-get-pocket:before{content:"\f20f"}.la-gg:before{content:"\f210"}.la-gg-circle:before{content:"\f211"}.la-gift:before{content:"\f212"}.la-git:before{content:"\f213"}.la-git-square:before{content:"\f214"}.la-github:before{content:"\f215"}.la-github-alt:before{content:"\f216"}.la-github-square:before{content:"\f217"}.la-glass:before{content:"\f218"}.la-globe:before{content:"\f219"}.la-google:before{content:"\f21a"}.la-google-plus:before{content:"\f21b"}.la-google-plus-square:before{content:"\f21c"}.la-google-wallet:before{content:"\f21d"}.la-graduation-cap:before{content:"\f21e"}.la-gittip:before,.la-gratipay:before{content:"\f21f"}.la-group:before{content:"\f220"}.la-h-square:before{content:"\f221"}.la-hacker-news:before{content:"\f222"}.la-hand-grab-o:before{content:"\f223"}.la-hand-lizard-o:before{content:"\f224"}.la-hand-o-down:before{content:"\f225"}.la-hand-o-left:before{content:"\f226"}.la-hand-o-right:before{content:"\f227"}.la-hand-o-up:before{content:"\f228"}.la-hand-paper-o:before{content:"\f229"}.la-hand-peace-o:before{content:"\f22a"}.la-hand-pointer-o:before{content:"\f22b"}.la-hand-rock-o:before{content:"\f22c"}.la-hand-scissors-o:before{content:"\f22d"}.la-hand-spock-o:before{content:"\f22e"}.la-hand-stop-o:before{content:"\f22f"}.la-hdd-o:before{content:"\f230"}.la-header:before{content:"\f231"}.la-headphones:before{content:"\f232"}.la-heart:before{content:"\f233"}.la-heart-o:before{content:"\f234"}.la-heartbeat:before{content:"\f235"}.la-history:before{content:"\f236"}.la-home:before{content:"\f237"}.la-hospital-o:before{content:"\f238"}.la-hotel:before{content:"\f239"}.la-hourglass:before{content:"\f23a"}.la-hourglass-1:before{content:"\f23b"}.la-hourglass-2:before{content:"\f23c"}.la-hourglass-3:before{content:"\f23d"}.la-hourglass-end:before{content:"\f23e"}.la-hourglass-half:before{content:"\f23f"}.la-hourglass-o:before{content:"\f240"}.la-hourglass-start:before{content:"\f241"}.la-houzz:before{content:"\f242"}.la-html5:before{content:"\f243"}.la-i-cursor:before{content:"\f244"}.la-ils:before{content:"\f245"}.la-image:before{content:"\f246"}.la-inbox:before{content:"\f247"}.la-indent:before{content:"\f248"}.la-industry:before{content:"\f249"}.la-info:before{content:"\f24a"}.la-info-circle:before{content:"\f24b"}.la-inr:before{content:"\f24c"}.la-instagram:before{content:"\f24d"}.la-institution:before{content:"\f24e"}.la-internet-explorer:before{content:"\f24f"}.la-ioxhost:before{content:"\f250"}.la-italic:before{content:"\f251"}.la-joomla:before{content:"\f252"}.la-jpy:before{content:"\f253"}.la-jsfiddle:before{content:"\f254"}.la-key:before{content:"\f255"}.la-keyboard-o:before{content:"\f256"}.la-krw:before{content:"\f257"}.la-language:before{content:"\f258"}.la-laptop:before{content:"\f259"}.la-lastfm:before{content:"\f25a"}.la-lastfm-square:before{content:"\f25b"}.la-leaf:before{content:"\f25c"}.la-leanpub:before{content:"\f25d"}.la-legal:before{content:"\f25e"}.la-lemon-o:before{content:"\f25f"}.la-level-down:before{content:"\f260"}.la-level-up:before{content:"\f261"}.la-life-bouy:before{content:"\f262"}.la-life-buoy:before{content:"\f263"}.la-life-ring:before,.la-support:before{content:"\f264"}.la-life-saver:before{content:"\f265"}.la-lightbulb-o:before{content:"\f266"}.la-line-chart:before{content:"\f267"}.la-link:before{content:"\f268"}.la-linkedin:before{content:"\f269"}.la-linkedin-square:before{content:"\f26a"}.la-linux:before{content:"\f26b"}.la-list:before{content:"\f26c"}.la-list-alt:before{content:"\f26d"}.la-list-ol:before{content:"\f26e"}.la-list-ul:before{content:"\f26f"}.la-location-arrow:before{content:"\f270"}.la-lock:before{content:"\f271"}.la-long-arrow-down:before{content:"\f272"}.la-long-arrow-left:before{content:"\f273"}.la-long-arrow-right:before{content:"\f274"}.la-long-arrow-up:before{content:"\f275"}.la-magic:before{content:"\f276"}.la-magnet:before{content:"\f277"}.la-mail-forward:before{content:"\f278"}.la-mail-reply:before{content:"\f279"}.la-mail-reply-all:before{content:"\f27a"}.la-male:before{content:"\f27b"}.la-map:before{content:"\f27c"}.la-map-marker:before{content:"\f27d"}.la-map-o:before{content:"\f27e"}.la-map-pin:before{content:"\f27f"}.la-map-signs:before{content:"\f280"}.la-mars:before{content:"\f281"}.la-mars-double:before{content:"\f282"}.la-mars-stroke:before{content:"\f283"}.la-mars-stroke-h:before{content:"\f284"}.la-mars-stroke-v:before{content:"\f285"}.la-maxcdn:before{content:"\f286"}.la-meanpath:before{content:"\f287"}.la-medium:before{content:"\f288"}.la-medkit:before{content:"\f289"}.la-meh-o:before{content:"\f28a"}.la-mercury:before{content:"\f28b"}.la-microphone:before{content:"\f28c"}.la-microphone-slash:before{content:"\f28d"}.la-minus:before{content:"\f28e"}.la-minus-circle:before{content:"\f28f"}.la-minus-square:before{content:"\f290"}.la-minus-square-o:before{content:"\f291"}.la-mobile:before{content:"\f292"}.la-mobile-phone:before{content:"\f293"}.la-money:before{content:"\f294"}.la-moon-o:before{content:"\f295"}.la-mortar-board:before{content:"\f296"}.la-motorcycle:before{content:"\f297"}.la-mouse-pointer:before{content:"\f298"}.la-music:before{content:"\f299"}.la-navicon:before{content:"\f29a"}.la-neuter:before{content:"\f29b"}.la-newspaper-o:before{content:"\f29c"}.la-object-group:before{content:"\f29d"}.la-object-ungroup:before{content:"\f29e"}.la-odnoklassniki:before{content:"\f29f"}.la-odnoklassniki-square:before{content:"\f2a0"}.la-opencart:before{content:"\f2a1"}.la-openid:before{content:"\f2a2"}.la-opera:before{content:"\f2a3"}.la-optin-monster:before{content:"\f2a4"}.la-outdent:before{content:"\f2a5"}.la-pagelines:before{content:"\f2a6"}.la-paint-brush:before{content:"\f2a7"}.la-paper-plane:before,.la-send:before{content:"\f2a8"}.la-paper-plane-o:before,.la-send-o:before{content:"\f2a9"}.la-paperclip:before{content:"\f2aa"}.la-paragraph:before{content:"\f2ab"}.la-paste:before{content:"\f2ac"}.la-pause:before{content:"\f2ad"}.la-paw:before{content:"\f2ae"}.la-paypal:before{content:"\f2af"}.la-pencil:before{content:"\f2b0"}.la-pencil-square:before{content:"\f2b1"}.la-pencil-square-o:before{content:"\f2b2"}.la-phone:before{content:"\f2b3"}.la-phone-square:before{content:"\f2b4"}.la-photo:before{content:"\f2b5"}.la-picture-o:before{content:"\f2b6"}.la-pie-chart:before{content:"\f2b7"}.la-pied-piper:before{content:"\f2b8"}.la-pied-piper-alt:before{content:"\f2b9"}.la-pinterest:before{content:"\f2ba"}.la-pinterest-p:before{content:"\f2bb"}.la-pinterest-square:before{content:"\f2bc"}.la-plane:before{content:"\f2bd"}.la-play:before{content:"\f2be"}.la-play-circle:before{content:"\f2bf"}.la-play-circle-o:before{content:"\f2c0"}.la-plug:before{content:"\f2c1"}.la-plus:before{content:"\f2c2"}.la-plus-circle:before{content:"\f2c3"}.la-plus-square:before{content:"\f2c4"}.la-plus-square-o:before{content:"\f2c5"}.la-power-off:before{content:"\f2c6"}.la-print:before{content:"\f2c7"}.la-puzzle-piece:before{content:"\f2c8"}.la-qq:before{content:"\f2c9"}.la-qrcode:before{content:"\f2ca"}.la-question:before{content:"\f2cb"}.la-question-circle:before{content:"\f2cc"}.la-quote-left:before{content:"\f2cd"}.la-quote-right:before{content:"\f2ce"}.la-ra:before{content:"\f2cf"}.la-random:before{content:"\f2d0"}.la-rebel:before{content:"\f2d1"}.la-recycle:before{content:"\f2d2"}.la-reddit:before{content:"\f2d3"}.la-reddit-square:before{content:"\f2d4"}.la-refresh:before{content:"\f2d5"}.la-registered:before{content:"\f2d6"}.la-renren:before{content:"\f2d7"}.la-reorder:before{content:"\f2d8"}.la-repeat:before{content:"\f2d9"}.la-reply:before{content:"\f2da"}.la-reply-all:before{content:"\f2db"}.la-retweet:before{content:"\f2dc"}.la-rmb:before{content:"\f2dd"}.la-road:before{content:"\f2de"}.la-rocket:before{content:"\f2df"}.la-rotate-left:before{content:"\f2e0"}.la-rotate-right:before{content:"\f2e1"}.la-rouble:before{content:"\f2e2"}.la-feed:before,.la-rss:before{content:"\f2e3"}.la-rss-square:before{content:"\f2e4"}.la-rub:before{content:"\f2e5"}.la-ruble:before{content:"\f2e6"}.la-rupee:before{content:"\f2e7"}.la-safari:before{content:"\f2e8"}.la-save:before{content:"\f2e9"}.la-scissors:before{content:"\f2ea"}.la-search:before{content:"\f2eb"}.la-search-minus:before{content:"\f2ec"}.la-search-plus:before{content:"\f2ed"}.la-sellsy:before{content:"\f2ee"}.la-server:before{content:"\f2ef"}.la-share:before{content:"\f2f0"}.la-share-alt:before{content:"\f2f1"}.la-share-alt-square:before{content:"\f2f2"}.la-share-square:before{content:"\f2f3"}.la-share-square-o:before{content:"\f2f4"}.la-shekel:before{content:"\f2f5"}.la-sheqel:before{content:"\f2f6"}.la-shield:before{content:"\f2f7"}.la-ship:before{content:"\f2f8"}.la-shirtsinbulk:before{content:"\f2f9"}.la-shopping-cart:before{content:"\f2fa"}.la-sign-in:before{content:"\f2fb"}.la-sign-out:before{content:"\f2fc"}.la-signal:before{content:"\f2fd"}.la-simplybuilt:before{content:"\f2fe"}.la-sitemap:before{content:"\f2ff"}.la-skyatlas:before{content:"\f300"}.la-skype:before{content:"\f301"}.la-slack:before{content:"\f302"}.la-sliders:before{content:"\f303"}.la-slideshare:before{content:"\f304"}.la-smile-o:before{content:"\f305"}.la-sort:before,.la-unsorted:before{content:"\f306"}.la-sort-alpha-asc:before{content:"\f307"}.la-sort-alpha-desc:before{content:"\f308"}.la-sort-amount-asc:before{content:"\f309"}.la-sort-amount-desc:before{content:"\f30a"}.la-sort-asc:before,.la-sort-up:before{content:"\f30b"}.la-sort-desc:before,.la-sort-down:before{content:"\f30c"}.la-sort-numeric-asc:before{content:"\f30d"}.la-sort-numeric-desc:before{content:"\f30e"}.la-soundcloud:before{content:"\f30f"}.la-space-shuttle:before{content:"\f310"}.la-spinner:before{content:"\f311"}.la-spoon:before{content:"\f312"}.la-spotify:before{content:"\f313"}.la-square:before{content:"\f314"}.la-square-o:before{content:"\f315"}.la-stack-exchange:before{content:"\f316"}.la-stack-overflow:before{content:"\f317"}.la-star:before{content:"\f318"}.la-star-half:before{content:"\f319"}.la-star-half-empty:before,.la-star-half-full:before,.la-star-half-o:before{content:"\f31a"}.la-star-o:before{content:"\f31b"}.la-steam:before{content:"\f31c"}.la-steam-square:before{content:"\f31d"}.la-step-backward:before{content:"\f31e"}.la-step-forward:before{content:"\f31f"}.la-stethoscope:before{content:"\f320"}.la-sticky-note:before{content:"\f321"}.la-sticky-note-o:before{content:"\f322"}.la-stop:before{content:"\f323"}.la-street-view:before{content:"\f324"}.la-strikethrough:before{content:"\f325"}.la-stumbleupon:before{content:"\f326"}.la-stumbleupon-circle:before{content:"\f327"}.la-subscript:before{content:"\f328"}.la-subway:before{content:"\f329"}.la-suitcase:before{content:"\f32a"}.la-sun-o:before{content:"\f32b"}.la-superscript:before{content:"\f32c"}.la-table:before{content:"\f32d"}.la-tablet:before{content:"\f32e"}.la-tachometer:before{content:"\f32f"}.la-tag:before{content:"\f330"}.la-tags:before{content:"\f331"}.la-tasks:before{content:"\f332"}.la-taxi:before{content:"\f333"}.la-television:before,.la-tv:before{content:"\f334"}.la-tencent-weibo:before{content:"\f335"}.la-terminal:before{content:"\f336"}.la-text-height:before{content:"\f337"}.la-text-width:before{content:"\f338"}.la-th:before{content:"\f339"}.la-th-large:before{content:"\f33a"}.la-th-list:before{content:"\f33b"}.la-thumb-tack:before{content:"\f33c"}.la-thumbs-down:before{content:"\f33d"}.la-thumbs-o-down:before{content:"\f33e"}.la-thumbs-o-up:before{content:"\f33f"}.la-thumbs-up:before{content:"\f340"}.la-ticket:before{content:"\f341"}.la-remove:before,.la-times:before{content:"\f342"}.la-times-circle:before{content:"\f343"}.la-times-circle-o:before{content:"\f344"}.la-tint:before{content:"\f345"}.la-toggle-off:before{content:"\f346"}.la-toggle-on:before{content:"\f347"}.la-trademark:before{content:"\f348"}.la-train:before{content:"\f349"}.la-intersex:before,.la-transgender:before{content:"\f34a"}.la-transgender-alt:before{content:"\f34b"}.la-trash:before{content:"\f34c"}.la-trash-o:before{content:"\f34d"}.la-tree:before{content:"\f34e"}.la-trello:before{content:"\f34f"}.la-tripadvisor:before{content:"\f350"}.la-trophy:before{content:"\f351"}.la-truck:before{content:"\f352"}.la-try:before{content:"\f353"}.la-tty:before{content:"\f354"}.la-tumblr:before{content:"\f355"}.la-tumblr-square:before{content:"\f356"}.la-turkish-lira:before{content:"\f357"}.la-twitch:before{content:"\f358"}.la-twitter:before{content:"\f359"}.la-twitter-square:before{content:"\f35a"}.la-umbrella:before{content:"\f35b"}.la-underline:before{content:"\f35c"}.la-undo:before{content:"\f35d"}.la-university:before{content:"\f35e"}.la-unlink:before{content:"\f35f"}.la-unlock:before{content:"\f360"}.la-unlock-alt:before{content:"\f361"}.la-upload:before{content:"\f362"}.la-usd:before{content:"\f363"}.la-user:before{content:"\f364"}.la-user-md:before{content:"\f365"}.la-user-plus:before{content:"\f366"}.la-user-secret:before{content:"\f367"}.la-user-times:before{content:"\f368"}.la-users:before{content:"\f369"}.la-venus:before{content:"\f36a"}.la-venus-double:before{content:"\f36b"}.la-venus-mars:before{content:"\f36c"}.la-viacoin:before{content:"\f36d"}.la-video-camera:before{content:"\f36e"}.la-vimeo:before{content:"\f36f"}.la-vimeo-square:before{content:"\f370"}.la-vine:before{content:"\f371"}.la-vk:before{content:"\f372"}.la-volume-down:before{content:"\f373"}.la-volume-off:before{content:"\f374"}.la-volume-up:before{content:"\f375"}.la-warning:before{content:"\f376"}.la-wechat:before{content:"\f377"}.la-weibo:before{content:"\f378"}.la-weixin:before{content:"\f379"}.la-whatsapp:before{content:"\f37a"}.la-wheelchair:before{content:"\f37b"}.la-wifi:before{content:"\f37c"}.la-wikipedia-w:before{content:"\f37d"}.la-windows:before{content:"\f37e"}.la-won:before{content:"\f37f"}.la-wordpress:before{content:"\f380"}.la-wrench:before{content:"\f381"}.la-xing:before{content:"\f382"}.la-xing-square:before{content:"\f383"}.la-y-combinator:before{content:"\f384"}.la-y-combinator-square:before{content:"\f385"}.la-yahoo:before{content:"\f386"}.la-yc:before{content:"\f387"}.la-yc-square:before{content:"\f388"}.la-yelp:before{content:"\f389"}.la-yen:before{content:"\f38a"}.la-youtube:before{content:"\f38b"}.la-youtube-play:before{content:"\f38c"}.la-youtube-square:before{content:"\f38d"}.card{border-radius:0;background-color:#fff;margin-bottom:30px;-webkit-box-shadow:0 1px 15px 1px rgba(69,65,78,.08);-moz-box-shadow:0 1px 15px 1px rgba(69,65,78,.08);box-shadow:0 1px 15px 1px rgba(69,65,78,.08);border:1px solid #eee}.card .card-header{padding:15px;background-color:transparent;border-bottom:1px solid #ebedf2!important}.card .card-title{margin:0;color:#575962;font-size:18px;font-weight:600;line-height:1.6}.card .card-sub{display:block;margin:5px 0 10px;font-size:.9rem;background:#f7f8fa;color:#575962;padding:.85rem 1.5rem;border-radius:4px}.card .card-action,.card .card-footer{background-color:transparent;line-height:30px;border-top:1px solid #ebedf2!important}.card .card-category,.card label{font-weight:400;color:#9A9A9A;margin-bottom:0;font-size:14px}.card .card-category{margin-top:5px}[type=checkbox]:checked+.form-check-sign,[type=radio]:checked+.form-radio-sign{font-weight:700}.card .card-body{padding:15px 15px 10px}.card .card-footer{font-size:14px}.card .card-action{padding:30px;font-size:14px}.card .card-footer hr{margin-top:5px;margin-bottom:5px}.card .card-footer .legend{display:inline-block}.card-stats .card-category{margin-top:0}.card-stats .icon-big{font-size:3em;min-height:64px}.card-tasks .table thead th{border-top:1px solid #f4f4f4;background:#fafafa!important}.card-tasks .table .form-check{padding:0 0 0 .75rem!important}.card-tasks .table .form-check label{margin-bottom:0!important}.card-tasks .table tbody td:first-child,.card-tasks .table thead th:first-child{padding-left:15px;padding-right:15px}.card-tasks .table tbody td:last-child,.card-tasks .table thead th:last-child{padding-right:15px}.card-tasks .card-body .table td{font-size:14px;line-height:1.8}.card-tasks .card-body .table td .btn{font-size:17px;opacity:.7;transition:all .3s}.card-tasks .card-body .table td:hover .btn{opacity:1}.card-danger,.card-default,.card-info,.card-primary,.card-success,.card-warning{color:#fff;border:0}.card-danger .card-header,.card-default .card-header,.card-info .card-header,.card-primary .card-header,.card-success .card-header,.card-warning .card-header{border-bottom:transparent!important}.card-danger .card-category,.card-danger .card-title,.card-danger label,.card-default .card-category,.card-default .card-title,.card-default label,.card-info .card-category,.card-info .card-title,.card-info label,.card-primary .card-category,.card-primary .card-title,.card-primary label,.card-success .card-category,.card-success .card-title,.card-success label,.card-warning .card-category,.card-warning .card-title,.card-warning label{color:#fff}.card-danger .icon-big>i,.card-default .icon-big>i,.card-info .icon-big>i,.card-primary .icon-big>i,.card-success .icon-big>i,.card-warning .icon-big>i{color:#fff!important}.card-danger .card-footer,.card-default .card-footer,.card-info .card-footer,.card-primary .card-footer,.card-success .card-footer,.card-warning .card-footer{border-top:transparent!important}.card-default{background:#607D8B}.card-primary{background:#1D62F0}.card-info{background:#23CCEF}.card-success{background:#59d05d}.card-warning{background:#fbad4c}.card-danger{background:#ff646d}.progress-card{margin-bottom:25px}.row-card-no-pd{margin-left:0;margin-right:0;background:#fff;margin-bottom:30px;padding-top:30px;padding-bottom:30px;position:relative}.row-card-no-pd .card{margin-bottom:0;border-width:0;box-shadow:none;position:unset}.row-card-no-pd [class*=col-] .card:after{position:absolute;height:calc(100%);width:1px;background:#eee;content:'';right:0}.row-card-no-pd [class*=col-] .card:after:last-child{width:0}.form-button-action{display:inline-flex}.select-all-checkbox+.form-check-sign:before{background:#ccc!important;border-color:#ccc!important}[type=checkbox]:checked,[type=checkbox]:not(:checked){position:absolute;left:-9999px}[type=checkbox]:checked+.form-check-sign,[type=checkbox]:not(:checked)+.form-check-sign{position:relative;padding-left:1.65em;color:#777;cursor:pointer}[type=checkbox]:checked+.form-check-sign:before,[type=checkbox]:not(:checked)+.form-check-sign:before{content:'';position:absolute;left:0;top:1px;width:16px;height:16px;border:1px solid #ccc;background:0 0;border-radius:4px}[type=checkbox]:checked+.form-check-sign:after,[type=checkbox]:not(:checked)+.form-check-sign:after{content:"\f17b";display:inline-block;position:absolute;top:-1px;left:2px;width:18px;height:18px;text-align:center;font-size:1.5em;line-height:.8;color:#4D7CFE;transition:all .2s;font-family:LineAwesome}[type=checkbox]:not(:checked)+.form-check-sign:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+.form-check-sign:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:checked+.form-check-sign:before,[type=checkbox]:disabled:not(:checked)+.form-check-sign:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+.form-check-sign:after{color:#999}[type=checkbox]:disabled+.form-check-sign{color:#aaa}[type=checkbox]:checked:focus+.form-check-sign:before,[type=checkbox]:not(:checked):focus+.form-check-sign:before{border:1px solid #ccc}.form-check-sign:hover:before{border:1px solid #ccc!important}.form-check{padding-left:.75rem}.form-check-input{position:relative;margin-top:.3rem}[type=radio]:checked,[type=radio]:not(:checked){position:absolute;left:-9999px}[type=radio]:checked+.form-radio-sign,[type=radio]:not(:checked)+.form-radio-sign{position:relative;padding-left:1.65em;color:#777;cursor:pointer}[type=radio]:not(:checked)+.form-radio-sign:before{content:"\f18a";font-size:22px;font-family:LineAwesome;position:absolute;left:0;top:auto;background:0 0;line-height:1}[type=radio]:checked+.form-radio-sign:before{content:"\f18a";font-size:22px;font-family:LineAwesome;position:absolute;left:0;top:auto;background:0 0;line-height:1;display:none}[type=radio]:checked+.form-radio-sign:after,[type=radio]:not(:checked)+.form-radio-sign:after{content:"\f1bc";position:absolute;left:0;top:auto;text-align:center;font-size:22px;color:#4D7CFE;transition:all .2s;line-height:1;font-family:LineAwesome}.caret,.chart-pie:after,.chart-pie:before{content:""}.form-radio-input,.has-feedback{position:relative}[type=radio]:not(:checked)+.form-radio-sign:after{opacity:0;transform:scale(0)}[type=radio]:checked+.form-radio-sign:after{opacity:1;transform:scale(1)}[type=radio]:disabled:checked+.form-radio-sign:before,[type=radio]:disabled:not(:checked)+.form-radio-sign:before{box-shadow:none;opacity:.65}[type=radio]:disabled:checked+.form-radio-sign:after{opacity:.65}[type=radio]:disabled+.form-radio-sign{color:#aaa;opacity:.65}[type=radio]:checked:focus+.form-radio-sign:before,[type=radio]:not(:checked):focus+.form-radio-sign:before{border:1px solid #ccc}.form-radio{padding-left:.75rem}.form-radio-input{margin-top:.3rem}.form-check,.form-group{margin-bottom:0;padding:15px 10px}.form-check label,.form-group label{margin-bottom:.5rem!important;color:#3f4047!important;font-weight:400;font-size:1rem}.form-inline label{margin-bottom:0!important}.input-fixed{width:200px}.form-control.input-full{width:100%!important}.has-success .form-control{border-color:#59d05d;color:#59d05d}.has-error .form-control{border-color:#ff646d;color:#ff646d}.form-control-feedback{position:absolute;top:50%;transform:translateY(-50%);right:20px}.has-success .form-control-feedback{color:#59d05d}.has-error .form-control-feedback{color:#ff646d}.input-group.has-icon{border-radius:.25rem;border:1px solid #ced4da}.input-group.has-icon.has-success,.input-group.has-success{border-color:1px solid #59d05d!important;color:#59d05d}.input-group.has-error,.input-group.has-icon.has-error{border:1px solid #ff646d!important;color:#ff646d}.input-group.has-icon .form-control{border-radius:.25rem;border:0;position:relative}.input-group.has-icon .input-group-icon{background:0 0;border:0}.input-square{border-radius:0!important}.input-pill{border-radius:1.3rem!important}.form-control:disabled,.form-control[readonly],.input-solid{background:#e8e8e8!important;border-color:#e8e8e8!important}.form-control:disabled,.form-control[readonly]{opacity:.6!important}.table{color:#555!important}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{vertical-align:middle}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th{padding:8px}.table thead th{color:#554;border-bottom-width:2px}.table td,.table th{font-size:14px;border-color:#ebedf2!important;padding:.75rem!important}.table-full-width{margin-left:-15px;margin-right:-15px}.table-bordered-bd-default td,.table-bordered-bd-default th{border:1px solid #607D8B!important}.table-bordered-bd-primary td,.table-bordered-bd-primary th{border:1px solid #1D62F0!important}.table-bordered-bd-info td,.table-bordered-bd-info th{border:1px solid #23CCEF!important}.table-bordered-bd-success td,.table-bordered-bd-success th{border:1px solid #59d05d!important}.table-bordered-bd-warning td,.table-bordered-bd-warning th{border:1px solid #fbad4c!important}.table-bordered-bd-danger td,.table-bordered-bd-danger th{border:1px solid #ff646d!important}.table-striped td,.table-striped th{border-top:0!important;border-bottom:0!important}.table-head-bg-default{border:1px solid #607D8B!important}.table-head-bg-primary{border:1px solid #1D62F0!important}.table-head-bg-info{border:1px solid #23CCEF!important}.table-head-bg-success{border:1px solid #59d05d!important}.table-head-bg-warning{border:1px solid #fbad4c!important}.table-head-bg-danger{border:1px solid #ff646d!important}.table-head-bg-default thead th,.table-striped-bg-default tbody tr:nth-of-type(odd){background:#607D8B!important;color:#fff!important;border:0!important}.table-head-bg-primary thead th,.table-striped-bg-primary tbody tr:nth-of-type(odd){background:#1D62F0!important;color:#fff!important;border:0!important}.table-head-bg-info thead th,.table-striped-bg-info tbody tr:nth-of-type(odd){background:#23CCEF!important;color:#fff!important;border:0!important}.table-head-bg-success thead th,.table-striped-bg-success tbody tr:nth-of-type(odd){background:#59d05d!important;color:#fff!important;border:0!important}.table-head-bg-warning thead th,.table-striped-bg-warning tbody tr:nth-of-type(odd){background:#fbad4c!important;color:#fff!important;border:0!important}.table-head-bg-danger thead th,.table-striped-bg-danger tbody tr:nth-of-type(odd){background:#ff646d!important;color:#fff!important;border:0!important}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.navbar .navbar-nav .nav-item .nav-link{display:inline-block;vertical-align:middle;color:#666;line-height:55px;letter-spacing:.04em;padding:0 20px 0 0;position:relative;font-size:14px;font-weight:500;text-align:center}.navbar .navbar-nav .nav-item .nav-link i{font-size:22px;width:30px;vertical-align:middle}.navbar-expand-lg .navbar-nav .dropdown-menu{left:auto;right:0}.dropdown-item{font-size:14px}.navbar .navbar-nav .notification{position:absolute;background-color:#ff646d;text-align:center;border-radius:10px;min-width:17px;height:17px;font-size:11px;color:#fff;font-weight:700;line-height:17px;top:11px;right:12px}.chart,.chart-pie{position:relative}.navbar-header{padding:0 15px}.navbar-header .dropdown-toggle{line-height:55px}.navbar-header .dropdown-toggle::after{margin-left:0;vertical-align:middle;color:#555}.profile-pic:focus,.profile-pic:hover{text-decoration:none}.hidden-caret .dropdown-toggle::after{display:none!important}.profile-pic .img-circle{border-radius:50%}.profile-pic span{font-size:14px;font-weight:600;padding:0 10px;color:#555}.nav-search .input-group{border:1px solid #eee;background:#eee;border-radius:50px}.nav-search .input-group:focus,.nav-search .input-group:hover{border:1px solid #ddd}.nav-search .form-control{border:0;background:0 0;font-size:14px}.nav-search .input-group-text{border:0;background:0 0}.nav-search .search-icon{font-size:21px;color:#666}.badge{border-radius:50px;margin-left:auto;line-height:1;padding:6px 10px;vertical-align:middle;font-weight:700;font-size:11px}.badge-count{border:1px solid #ddd}.badge-default{background:#607D8B;color:#fff!important}.badge-primary{background:#1D62F0}.badge-info{background:#23CCEF}.badge-success{background-color:#59d05d}.badge-warning{background:#fbad4c;color:#fff!important}.badge-danger{background-color:#ff646d}.dropdown-menu{border:1px solid rgba(120,130,140,.13);border-radius:0;box-shadow:0 3px 12px rgba(0,0,0,.05)!important;-webkit-box-shadow:0!important;-moz-box-shadow:0!important;padding-bottom:8px;margin-top:0}.dropdown-title{border-bottom:1px solid rgba(0,0,0,.1);color:#263238;font-size:15px;font-weight:800;padding:5px 20px 10px;text-align:center}.notif-box{width:280px;padding-bottom:0}.notif-box .notif-center a{display:flex;border-bottom:1px solid #eaeaea;color:#4d585f}.notif-box .notif-center a:hover{text-decoration:none;background:#fafafa;transition:all .2s}.notif-box .notif-center a .notif-icon,.notif-box .notif-center a .notif-img{display:inline-flex;width:40px;height:40px;margin:10px;align-items:center;justify-content:center;background:#eee;border-radius:50%}.notif-box .notif-center a .notif-img img{width:100%;height:100%;border-radius:50%}.notif-box .notif-center a .notif-icon.notif-danger,.notif-box .notif-center a .notif-icon.notif-default,.notif-box .notif-center a .notif-icon.notif-info,.notif-box .notif-center a .notif-icon.notif-primary,.notif-box .notif-center a .notif-icon.notif-success,.notif-box .notif-center a .notif-icon.notif-warning{color:#fff!important}.notif-box .notif-center a .notif-icon.notif-default{background:#607D8B!important}.notif-box .notif-center a .notif-icon.notif-primary{background:#1D62F0!important}.notif-box .notif-center a .notif-icon.notif-info{background:#23CCEF!important}.notif-box .notif-center a .notif-icon.notif-success{background:#59d05d!important}.notif-box .notif-center a .notif-icon.notif-warning{background:#fbad4c!important}.notif-box .notif-center a .notif-icon.notif-danger{background:#ff646d!important}.notif-box .notif-center a .notif-icon i{font-size:21px}.notif-box .notif-center a .notif-content{padding:10px 15px 10px 0}.notif-box .notif-center a .notif-content .block{font-size:14px;line-height:20px;display:block}.notif-box .notif-center a .notif-content .time{color:#7d8c95;font-size:12px}.notif-box .see-all,.notif-box .see-all:hover{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;color:#555;font-size:15px;font-weight:400;text-decoration:none}.notif-box .see-all i{float:right}.dropdown-user{width:280px}.user-box{display:flex;padding:.25rem 1rem}.user-box .u-img{width:80px}.user-box .u-img img{width:100%;border-radius:5px}.user-box .u-text{padding:0 10px}.user-box .u-text h4{margin-bottom:0;font-size:18px}.user-box .u-text .text-muted{font-size:13px;margin-bottom:5px}.user-box .u-text .btn{font-size:12px}.caret{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.chart{margin:30px 0}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central;fill:#fff!important;color:#fff!important}.chart-circle{display:flex;justify-content:center}.chart-circle .circles-text{font-size:28px!important}.color-box{width:15px;height:15px;border-radius:2px;display:inline-block;float:left;padding-top:3px;margin:2px 5px 0 0}.chart-pie{display:block;width:100%}.chart-pie:before{display:block;float:left;width:0;height:0;padding-bottom:75%}.chart-pie:after{display:table;clear:both}.chart-pie svg{display:block;position:absolute;top:0;left:0;width:100%;height:100%}.alert{border:0;color:#fff;position:relative;padding-left:65px}.alert [data-notify=icon]{font-size:30px;display:block;left:15px;position:absolute;top:50%;margin-top:-15px}.alert [data-notify=message],.btn{font-size:14px}.alert [data-notify=title]{display:block;font-weight:700}.alert .close{background:rgba(255,255,255,.8);width:25px;height:25px;line-height:25px;top:auto!important;border-radius:50%}.alert-primary{background-color:#1D62F0}.alert-info{background-color:#23CCEF}.alert-success{background-color:#59d05d}.alert-warning{background-color:#fbad4c}.alert-danger{background-color:#ff646d}.btn{padding:8px 16px;opacity:.9;border-radius:3px}.btn:focus,.btn:hover{opacity:1}.btn-lg{font-size:18px;border-radius:6px;padding:10px 30px;font-weight:400}.btn-sm{font-size:12px;padding:7px 13px}.btn-xs{font-size:11px;padding:5px 9px}.btn.disabled:hover,.btn:hover:disabled{opacity:.65}.btn-default,.btn-default:disabled,.btn-default:focus,.btn-default:hover{background:#607D8B!important;color:#fff!important}.btn-primary,.btn-primary:disabled,.btn-primary:focus,.btn-primary:hover{background:#1D62F0!important;border-color:#1D62F0!important}.btn-info,.btn-info:disabled,.btn-info:focus,.btn-info:hover{background:#23CCEF!important;border-color:#23CCEF!important}.btn-success,.btn-success:disabled,.btn-success:focus,.btn-success:hover{background:#59d05d!important;border-color:#59d05d!important}.btn-warning,.btn-warning:disabled,.btn-warning:focus,.btn-warning:hover{background:#fbad4c!important;border-color:#fbad4c!important;color:#fff!important}.btn-danger,.btn-danger:disabled,.btn-danger:focus,.btn-danger:hover{background:#ff646d!important;border-color:#ff646d!important}.btn-border,.btn-border:focus,.btn-border:hover{background:0 0!important;font-weight:600!important}.btn-default.btn-border{color:#607D8B!important;border:2px solid #607D8B!important}.btn-primary.btn-border{color:#1D62F0!important;border:2px solid #1D62F0!important}.btn-info.btn-border{color:#23CCEF!important;border:2px solid #23CCEF!important}.btn-success.btn-border{color:#59d05d!important;border:2px solid #59d05d!important}.btn-warning.btn-border{color:#fbad4c!important;border:2px solid #fbad4c!important}.btn-danger.btn-border{color:#ff646d!important;border:2px solid #ff646d!important}.btn-round{border-radius:100px!important}.btn-link,.btn-link:focus,.btn-link:hover{background:0 0!important;border:0!important}.btn-link:focus,.btn-link:hover{text-decoration:underline!important}.btn-default.btn-link,.btn-default.btn-link:hover{color:#607D8B!important}.btn-primary.btn-link,.btn-primary.btn-link:hover{color:#1D62F0!important}.btn-info.btn-link,.btn-info.btn-link:hover{color:#23CCEF!important}.btn-success.btn-link,.btn-success.btn-link:hover{color:#59d05d!important}.btn-warning.btn-link,.btn-warning.btn-link:hover{color:#fbad4c!important}.btn-danger.btn-link,.btn-danger.btn-link:hover{color:#ff646d!important}.toggle-on.btn{color:#fff!important}.toggle-handle,.toggle-handle:hover{background:#fff!important}.btn-round .toggle-handle{border-radius:50px}.btn-rounded{border-radius:60px!important}.btn-simple-default,.btn-simple-default:hover{color:#607D8B;text-decoration:none}.btn-simple-primary,.btn-simple-primary:hover{color:#1D62F0;text-decoration:none}.btn-simple-info,.btn-simple-info:hover{color:#23CCEF;text-decoration:none}.btn-simple-danger,.btn-simple-danger:hover{color:#ff646d;text-decoration:none}.btn-simple-warning,.btn-simple-warning:hover{color:#fbad4c;text-decoration:none}.btn-simple-success,.btn-simple-success:hover{color:#59d05d;text-decoration:none}.btn-full{width:100%}.btn-no-radius{border-radius:0}.nav-pills>li:first-child>a{border-radius:4px 0 0 4px!important}.nav-pills>li:last-child>a{border-radius:0 4px 4px 0!important}.nav-link.disabled{color:#6c757d!important}.nav-pills>li>a{margin-left:-1px;border-radius:0!important;border:1px solid #1D62F0;color:#1D62F0}.nav-pills>li>a.active{background:#1D62F0}.nav-pills>li>a:hover{background:#fafafa}.nav-pills.nav-default>li>a{border:1px solid #607D8B;color:#607D8B}.nav-pills.nav-default>li>a.active{background:#607D8B}.nav-pills.nav-primary>li>a{border:1px solid #1D62F0;color:#1D62F0}.nav-pills.nav-primary>li>a.active{background:#1D62F0}.nav-pills.nav-info>li>a{border:1px solid #23CCEF;color:#23CCEF}.nav-pills.nav-info>li>a.active{background:#23CCEF}.nav-pills.nav-success>li>a{border:1px solid #59d05d;color:#59d05d}.nav-pills.nav-success>li>a.active{background:#59d05d}.nav-pills.nav-warning>li>a{border:1px solid #fbad4c;color:#fbad4c}.nav-pills.nav-warning>li>a.active{background:#fbad4c}.nav-pills.nav-danger>li>a{border:1px solid #ff646d;color:#ff646d}.nav-pills.nav-danger>li>a.active{background:#ff646d}.pagination>li:first-child>a,.pagination>li:first-child>span,.pagination>li:last-child>a,.pagination>li:last-child>span,.pagination>li>a,.pagination>li>span{border-radius:100px!important;margin:0 2px;color:#777;border-color:#ddd}.pagination.pg-primary>li.active:first-child>a,.pagination.pg-primary>li.active:first-child>span,.pagination.pg-primary>li.active:last-child>a,.pagination.pg-primary>li.active:last-child>span,.pagination.pg-primary>li.active>a,.pagination.pg-primary>li.active>span{background:#1D62F0;border-color:#1D62F0;color:#fff}.pagination.pg-info>li.active:first-child>a,.pagination.pg-info>li.active:first-child>span,.pagination.pg-info>li.active:last-child>a,.pagination.pg-info>li.active:last-child>span,.pagination.pg-info>li.active>a,.pagination.pg-info>li.active>span{background:#23CCEF;border-color:#23CCEF;color:#fff}.pagination.pg-success>li.active:first-child>a,.pagination.pg-success>li.active:first-child>span,.pagination.pg-success>li.active:last-child>a,.pagination.pg-success>li.active:last-child>span,.pagination.pg-success>li.active>a,.pagination.pg-success>li.active>span{background:#59d05d;border-color:#59d05d;color:#fff}.pagination.pg-warning>li.active:first-child>a,.pagination.pg-warning>li.active:first-child>span,.pagination.pg-warning>li.active:last-child>a,.pagination.pg-warning>li.active:last-child>span,.pagination.pg-warning>li.active>a,.pagination.pg-warning>li.active>span{background:#fbad4c;border-color:#fbad4c;color:#fff}.pagination.pg-danger>li.active:first-child>a,.pagination.pg-danger>li.active:first-child>span,.pagination.pg-danger>li.active:last-child>a,.pagination.pg-danger>li.active:last-child>span,.pagination.pg-danger>li.active>a,.pagination.pg-danger>li.active>span{background:#ff646d;border-color:#ff646d;color:#fff}.pagination.pg-default>li.active:first-child>a,.pagination.pg-default>li.active:first-child>span,.pagination.pg-default>li.active:last-child>a,.pagination.pg-default>li.active:last-child>span,.pagination.pg-default>li.active>a,.pagination.pg-default>li.active>span{background:#607D8B;border-color:#607D8B;color:#fff}.slider-default .ui-slider-range{background:#607D8B}.slider-primary .ui-slider-range{background:#1D62F0}.slider-info .ui-slider-range{background:#23CCEF}.slider-success .ui-slider-range{background:#59d05d}.slider-warning .ui-slider-range{background:#fbad4c}.slider-danger .ui-slider-range{background:#ff646d}.modal .bg-danger .modal-title,.modal .bg-default .modal-title,.modal .bg-info .modal-title,.modal .bg-primary .modal-title,.modal .bg-success .modal-title,.modal .bg-warning .modal-title{color:#fff!important}.modal-content{border-radius:.4rem!important;border:0!important}.mapael .map{position:relative}.mapael .zoomButton{background-color:#292929;border:1px solid #292929;color:#fff;width:15px;height:15px;line-height:12px;text-align:center;border-radius:3px;cursor:pointer;position:absolute;top:0;font-weight:700;left:10px;-khtml-user-select:none;-o-user-select:none;user-select:none}.mapael .zoomReset{top:10px}.mapael .zoomIn{top:30px}.mapael .zoomOut{top:50px}.mapael .mapTooltip{position:absolute;background-color:#474c4b;moz-opacity:.7;opacity:.7;filter:alpha(opacity=70);border-radius:10px;padding:10px;z-index:1000;max-width:200px;display:none;color:#fff}@media screen and (max-width:700px){.row-card-no-pd [class*=col-] .card:after{width:0!important}.row-card-no-pd .card{border-bottom-width:1px}.row-card-no-pd .card:last-child{border-bottom-width:0}}@media screen and (min-width:992px){.main-header .logo-header{line-height:52px}.sidebar .scroll-element{opacity:0;transition:all .2s}.sidebar:hover .scroll-element{opacity:1}}@media screen and (max-width:991px){.main-header,.main-panel,.navbar-header,.sidebar{transition:all .5s}.sidebar{position:fixed;left:0!important;right:0;-webkit-transform:translate3d(-270px,0,0);-moz-transform:translate3d(-270px,0,0);-o-transform:translate3d(-270px,0,0);-ms-transform:translate3d(-270px,0,0);transform:translate3d(-270px,0,0)!important}.nav_open .sidebar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)!important}.sidebar .sidebar-wrapper{padding-top:0}.nav_open{overflow:hidden!important}.nav_open .main-header,.nav_open .main-panel{-webkit-transform:translate3d(260px,0,0);-moz-transform:translate3d(260px,0,0);-o-transform:translate3d(260px,0,0);-ms-transform:translate3d(260px,0,0);transform:translate3d(260px,0,0)!important}.main-panel{width:100%}.main-panel .content{padding:30px 10px}.main-header .logo-header{display:flex;width:100%!important;text-align:left;position:relative;justify-content:center}.main-header .logo-header .navbar-toggler{position:absolute;top:auto;height:100%;left:15px;opacity:1}.main-header .logo-header .more{opacity:1;position:absolute;right:15px;color:#545454;cursor:pointer}.nav-search{width:100%;margin-right:0!important;margin-top:12px}.navbar-header{border-top:1px solid #eee;position:absolute;width:100%;background:#fff;transform:translate3d(0,-200px,0)!important}.topbar_open .navbar-header{transform:translate3d(0,54px,0)!important;border-bottom:1px solid #eee}.topbar_open .main-panel{transform:translate3d(0,125px,0)!important}.nav_open.topbar_open .main-panel{transform:translate3d(260px,125px,0)!important}.navbar-header .navbar-nav{width:100%;flex-direction:row;justify-content:center;margin-left:0!important;margin-top:10px;margin-bottom:10px;position:relative}.navbar-header .navbar-nav .dropdown{position:unset}.navbar-header .navbar-nav .dropdown-menu{position:absolute;left:0;right:0;margin:0 auto;max-width:280px}.profile-pic span{display:none}} \ No newline at end of file diff --git a/public/assets/fonts/line-awesome.eot b/public/assets/fonts/line-awesome.eot new file mode 100644 index 0000000..fde50df Binary files /dev/null and b/public/assets/fonts/line-awesome.eot differ diff --git a/public/assets/fonts/line-awesome.svg b/public/assets/fonts/line-awesome.svg new file mode 100644 index 0000000..e3ab5fd --- /dev/null +++ b/public/assets/fonts/line-awesome.svg @@ -0,0 +1,2628 @@ + + + + + +Created by FontForge 20120731 at Sun Jan 22 13:00:30 2017 + By icons8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/fonts/line-awesome.ttf b/public/assets/fonts/line-awesome.ttf new file mode 100644 index 0000000..8f99967 Binary files /dev/null and b/public/assets/fonts/line-awesome.ttf differ diff --git a/public/assets/fonts/line-awesome.woff b/public/assets/fonts/line-awesome.woff new file mode 100644 index 0000000..0b3db49 Binary files /dev/null and b/public/assets/fonts/line-awesome.woff differ diff --git a/public/assets/fonts/line-awesome.woff2 b/public/assets/fonts/line-awesome.woff2 new file mode 100644 index 0000000..82810e7 Binary files /dev/null and b/public/assets/fonts/line-awesome.woff2 differ diff --git a/public/assets/img/ayam.png b/public/assets/img/ayam.png new file mode 100644 index 0000000..2ba9b90 Binary files /dev/null and b/public/assets/img/ayam.png differ diff --git a/public/assets/img/menu.png b/public/assets/img/menu.png new file mode 100644 index 0000000..8cae69b Binary files /dev/null and b/public/assets/img/menu.png differ diff --git a/public/assets/img/menu2.png b/public/assets/img/menu2.png new file mode 100644 index 0000000..52c68ad Binary files /dev/null and b/public/assets/img/menu2.png differ diff --git a/public/assets/img/profile.jpg b/public/assets/img/profile.jpg new file mode 100644 index 0000000..13d4560 Binary files /dev/null and b/public/assets/img/profile.jpg differ diff --git a/public/assets/img/profile2.jpg b/public/assets/img/profile2.jpg new file mode 100644 index 0000000..d13cf9d Binary files /dev/null and b/public/assets/img/profile2.jpg differ diff --git a/public/assets/js/core/bootstrap.min.js b/public/assets/js/core/bootstrap.min.js new file mode 100644 index 0000000..534d533 --- /dev/null +++ b/public/assets/js/core/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.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))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._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()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s0&&(this._selector=o,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 o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap 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 I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.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},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._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",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._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},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:''}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._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 s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/public/assets/js/core/jquery.3.2.1.min.js b/public/assets/js/core/jquery.3.2.1.min.js new file mode 100644 index 0000000..644d35e --- /dev/null +++ b/public/assets/js/core/jquery.3.2.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.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(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + @if ($errors->any()) + + @endif + + + @if (session('success')) + + @endif + +@endsection diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php new file mode 100644 index 0000000..7412f2e --- /dev/null +++ b/resources/views/home.blade.php @@ -0,0 +1,287 @@ +@extends('template') +@section('title', 'Beranda') + +@section('content') +
+
+
+
+

+ Hi, selamat datang kembali +

+ + {{ now()->translatedFormat('l, d F Y') }} — + Login sebagai {{ auth()->user()->isAdmin() ? 'Admin' : 'Karyawan' }} + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ Jumlah Ayam +
+ {{ number_format($jumlahAyam ?? 0, 0, ',', '.') }} Ekor +
+
+
+ + + Total populasi ayam aktif + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ Produksi Hari Ini +
+ {{ number_format($produksiHariIni ?? 0, 1, ',', '.') }} Kg +
+
+
+ + + Akumulasi produksi hari ini + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ Stok Pakan +
+ {{ number_format($stokPakan ?? 0, 1, ',', '.') }} Karung +
+
+
+ + + @if (isset($stokMenipis) && $stokMenipis->count()) + ⚠ Stok menipis: {{ $stokMenipis->pluck('nama_barang')->join(', ') }} + @else + Stok dalam batas aman + @endif + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ Pendapatan Hari Ini +
+ Rp {{ number_format($pendapatanHariIni ?? 0, 0, ',', '.') }} +
+
+
+ + + Total transaksi hari ini + +
+
+
+ +
+
+ + +
+
+ +
+
+
+
+
+
Produksi Telur
+ Harian dalam periode terpilih +
+ +
+ + + + + +
+
+ + +
+ +
+ +
+
+
+ + + + @auth + @if (auth()->user()->isAdmin()) +
+
+
+ +
+
+
Total Keuangan
+ Mingguan +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ @endif + + + @endauth + + +
+
+ +
+
+
+@endsection + +@section('scripts') + + + + + +@endsection diff --git a/resources/views/inventori-ayam.blade.php b/resources/views/inventori-ayam.blade.php new file mode 100644 index 0000000..8ef2fc2 --- /dev/null +++ b/resources/views/inventori-ayam.blade.php @@ -0,0 +1,560 @@ +@extends('template') +@section('title', 'Populasi Ayam') + +@section('content') +
+
+
+ + +
+

Populasi Ayam

+
+
+ @foreach ($kandang as $k) +
+
+
+ +
+ {{ $k->nama_kandang }} +
+ + + +
+ {{ number_format($k->jumlah_ayam_terakhir, 0, ',', '.') }} +
+ +
+
+
+ @endforeach +
+ +
+ + +
+
+
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ +
+
+
+ + + + + +
+
+ + + + + + + + + + + + + + @forelse ($data as $item) + + + + + + + + + + + + + + + + + @empty + + + + @endforelse + +
NoNama KandangJumlahJenis MutasiKeteranganTanggal UpdateAksi
+ {{ $data->firstItem() + $loop->index }} + {{ $item->kandang->nama_kandang ?? '-' }}{{ number_format($item->jumlah, 0, ',', '.') }} + {{ ucfirst($item->jenis_mutasi ?? '-') }} +{{ $item->keterangan ?? '-' }} + {{ \Carbon\Carbon::parse($item->tanggal)->translatedFormat('d F Y') }} + + + + @auth + @if (auth()->user()->isAdmin()) + + @endif + @endauth +
+ Data populasi ayam belum tersedia +
+
+
+ + +
+ + + @if ($data->count()) + Menampilkan {{ $data->firstItem() }} – {{ $data->lastItem() }} + dari {{ $data->total() }} data + @else + Tidak ada data populasi ayam + @endif + + + @if ($data->hasPages()) + {{ $data->links() }} + @endif + +
+ + +
+
+
+
+ + + + + + + + + +@endsection + + +@section('scripts') + + + + {{-- SWEET ALERT SUCCESS --}} + @if (session('success')) + + @endif + +@endsection diff --git a/resources/views/inventori-pakan.blade.php b/resources/views/inventori-pakan.blade.php new file mode 100644 index 0000000..0da0fa8 --- /dev/null +++ b/resources/views/inventori-pakan.blade.php @@ -0,0 +1,692 @@ +@extends('template') +@section('title', 'Manajemen Pakan') + +@section('content') +
+
+
+
+

Manajemen Pakan

+
+
+ +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ +
+
+ @if (auth()->user()->isAdmin() && isset($stokMenipis) && $stokMenipis->count()) +
+ ⚠ Stok Menipis +
    + @foreach ($stokMenipis as $s) +
  • + {{ $s->nama_barang }} tersisa + {{ number_format($s->stok, 0, ',', '.') }} karung +
  • + @endforeach +
+
+ @endif + + + + +
+
+ + + + + + + + + @if (auth()->user()->isAdmin()) + + + + @endif + + + + + @forelse ($data as $item) + + + + + + + + + + + + @if (auth()->user()->isAdmin()) + + + + + + @endif + + + + @empty + + + + @endforelse + + + + +
NoTanggalNama BarangJenisJumlahHarga (Rp)Total (Rp)Aksi
+ {{ $data->firstItem() ? $data->firstItem() + $loop->index : $loop->iteration }} + + {{ \Carbon\Carbon::parse($item->tanggal)->translatedFormat('d F Y') }} + + {{ $item->nama_barang }} + + + {{ ucfirst($item->jenis_transaksi) }} + + + {{ number_format($item->jumlah, 0, ',', '.') }} {{ $item->satuan }} + + {{ $item->harga_satuan ? 'Rp ' . number_format($item->harga_satuan, 0, ',', '.') : '-' }} + + {{ $item->total_harga ? 'Rp ' . number_format($item->total_harga, 0, ',', '.') : '-' }} + +
+ + + +
+ +
+ Data manajemen pakan belum tersedia +
+
+
+ + +
+ + @if ($data->count()) + Menampilkan {{ $data->firstItem() }} – {{ $data->lastItem() }} + dari {{ $data->total() }} data + @else + Belum ada data + @endif + + + @if ($data->hasPages()) + {{ $data->links() }} + @endif +
+ + +
+ +
+
+
+ + + + + + + + + +@endsection + + +@section('scripts') + + + + @if (session('success')) + + @endif + + + @if ($errors->any()) + + @endif + +@endsection diff --git a/resources/views/karyawan.blade.php b/resources/views/karyawan.blade.php new file mode 100644 index 0000000..3e865d2 --- /dev/null +++ b/resources/views/karyawan.blade.php @@ -0,0 +1,465 @@ +@extends('template') +@section('title', 'Data Karyawan') + +@section('content') +
+
+
+
+

Data Karyawan

+
+
+ +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
+ +
+
+ + + + + + + + + + + + + +@foreach ($data as $item) + + + + + + + + + + + + +@endforeach + +@if ($data->count() == 0) + + + +@endif + +
NoNama KaryawanNo HpAlamatStatusAksi
+ {{ $data->firstItem() + $loop->index }} + + {{ $item->nama_karyawan }}
+ + @if ($item->user) + + Memiliki Akun + + @else + + Tidak Memiliki Akun + + @endif +
{{ $item->no_hp }}{{ $item->alamat ?? '-' }} + @if ($item->status_karyawan === 'aktif') + Aktif + @else + Non Aktif + @endif + + + + + + @if ($item->status_karyawan === 'aktif') + + @else +
+ @csrf + @method('PATCH') + + +
+ @endif +
+ Data karyawan belum tersedia +
+
+
+ +
+ + @if ($data->count()) + Menampilkan {{ $data->firstItem() }} – {{ $data->lastItem() }} + dari {{ $data->total() }} data + @endif + + @if ($data->hasPages()) + {{ $data->links() }} + @endif +
+
+
+
+
+ + + + + + @foreach ($data as $item) + + + + + + + @endforeach +@endsection + +@section('scripts') + + + + + + @if (session('success')) + + @endif + + + @if ($errors->any()) + + @endif + + + +@endsection diff --git a/resources/views/laporan.blade.php b/resources/views/laporan.blade.php new file mode 100644 index 0000000..2db58b8 --- /dev/null +++ b/resources/views/laporan.blade.php @@ -0,0 +1,301 @@ +@extends('template') +@section('title', 'Laporan') + +@section('content') +
+
+
+
+

Laporan Tahunan

+
+
+ +
+
+
+
+
Tahun Laporan
+ + + Menampilkan data laporan tahun {{ $tahun }} + +
+ +
+
+
+ + + + + +
+ + +
+
+ @php + $bulanProduksi = request('bulan_produksi', 1); + @endphp + +
+ + +
+
+ + +
+
+
+ +
+ + + + + + + + + @php + $dataProduksi = $produksi->where('bulan', $bulanProduksi); + $totalProduksi = 0; + @endphp + + @foreach ($dataProduksi as $row) + + + + + @php $totalProduksi += $row->total_produksi; @endphp + @endforeach + + + + + + +
MingguTotal Produksi (Kg)
Minggu {{ $row->minggu }}{{ number_format($row->total_produksi) }}
+ Total + {{ \Carbon\Carbon::createFromDate(null, $bulanProduksi, 1)->translatedFormat('F') }} + {{ number_format($totalProduksi) }}
+ +
+ + Total Produksi Bulan: + {{ number_format($totalProduksi, 0, ',', '.') }} Kg + + + + Rata-rata Produksi Mingguan: + + {{ $dataProduksi->count() > 0 ? number_format($totalProduksi / $dataProduksi->count(), 1, ',', '.') : 0 }} + Kg + + + +
+
+
+
+ + +
+
+ @php + $bulanInventori = request('bulan_inventori', 1); + @endphp + +
+ + +
+
+ + +
+
+
+ +
+ + + + + + + + + + @php + $dataInventori = $inventori->where('bulan', $bulanInventori); + $totalMasuk = 0; + $totalKeluar = 0; + @endphp + + @foreach ($dataInventori as $row) + + + + + + @php + $totalMasuk += $row->masuk; + $totalKeluar += $row->keluar; + @endphp + @endforeach + + + + + + + +
MingguMasuk (Kg)Keluar (Kg)
Minggu {{ $row->minggu }}{{ number_format($row->masuk) }}{{ number_format($row->keluar) }}
+ Total + {{ \Carbon\Carbon::createFromDate(null, $bulanInventori, 1)->translatedFormat('F') }} + {{ number_format($totalMasuk) }}{{ number_format($totalKeluar) }}
+
+ +
+ + Total Masuk Bulan: + {{ number_format($totalMasuk) }} Kg + + + + Total Keluar Bulan: + {{ number_format($totalKeluar) }} Kg + + + + Rata-rata Masuk Mingguan: + + {{ $dataInventori->count() > 0 ? number_format($totalMasuk / $dataInventori->count(), 1, ',', '.') : 0 }} + Kg + + + + + Rata-rata Keluar Mingguan: + + {{ $dataInventori->count() > 0 ? number_format($totalKeluar / $dataInventori->count(), 1, ',', '.') : 0 }} + Kg + + + +
+ +
+
+ + + +
+
+
+ + + + + + + + + + + + @for ($b = 1; $b <= 12; $b++) + @php + $pemasukan = + $keuangan['pemasukan']->firstWhere('bulan', $b)->total ?? 0; + $inventori = + $keuangan['inventori']->firstWhere('bulan', $b)->total ?? 0; + $gaji = $keuangan['gaji']->firstWhere('bulan', $b)->total ?? 0; + $laba = $pemasukan - ($inventori + $gaji); + @endphp + + + + + + + + @endfor + +
BulanPemasukanPembelianGajiLaba / Rugi
+ {{ \Carbon\Carbon::createFromDate(null, $b, 1)->locale('id')->translatedFormat('F') }} + + Rp {{ number_format($pemasukan, 0, ',', '.') }} + + Rp {{ number_format($inventori, 0, ',', '.') }} + + Rp {{ number_format($gaji, 0, ',', '.') }} + + Rp {{ number_format($laba, 0, ',', '.') }} +
+
+
+
+ + +
+
+ +
+
+
+@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..c5ff315 --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,36 @@ + + + + + + + + {{ config('app.name', 'Laravel') }} + + + + + + + @vite(['resources/css/app.css', 'resources/js/app.js']) + + +
+ @include('layouts.navigation') + + + @isset($header) +
+
+ {{ $header }} +
+
+ @endisset + + +
+ {{ $slot }} +
+
+ + diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php new file mode 100644 index 0000000..32e3ab7 --- /dev/null +++ b/resources/views/layouts/guest.blade.php @@ -0,0 +1,44 @@ +@props(['title' => '']) + + + + + + + +{{ config('app.name') }} | {{ $title ?? '' }} + + + + + + + +{{-- --}} + + + + + + + +
+
+ + {{ $slot }} + +
+
+ + + + + + + diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php new file mode 100644 index 0000000..c2d3a65 --- /dev/null +++ b/resources/views/layouts/navigation.blade.php @@ -0,0 +1,100 @@ + diff --git a/resources/views/produksi-hasil.blade.php b/resources/views/produksi-hasil.blade.php new file mode 100644 index 0000000..1ca7c78 --- /dev/null +++ b/resources/views/produksi-hasil.blade.php @@ -0,0 +1,455 @@ +@extends('template') +@section('title', 'Produksi Telur') + +@section('content') +
+
+
+
+

Produksi Telur

+
+
+ +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + @foreach ($data as $item) + + + + + + + + + + + + + + + + @endforeach + @if ($data->count() == 0) + + + + @endif + +
NoKandangShiftTelur BaikTelur RusakTotal TelurTanggal ProduksiStatusAksi
{{ $data->firstItem() + $loop->index }} + {{ optional($item->kandang)->nama_kandang ?? '-' }}{{ ucfirst($item->shift) }} + {{ rtrim(rtrim(number_format($item->berat_telur_layak, 2, ',', '.'), '0'), ',') }} + kg + + {{ rtrim(rtrim(number_format($item->berat_telur_rusak, 2, ',', '.'), '0'), ',') }} + kg + + {{ rtrim(rtrim(number_format($item->berat_telur_total, 2, ',', '.'), '0'), ',') }} + kg + {{ \Carbon\Carbon::parse($item->tanggal_produksi)->translatedFormat('d F Y') }} + + Selesai + + + + @auth + @if (auth()->user()->isAdmin()) + + @endif + @endauth + +
+ Data produksi belum tersedia +
+
+
+ + + + + + +
+
+
+
+ + + + + + + + + +@endsection + +@section('scripts') + +@endsection diff --git a/resources/views/produksi-keuangan.blade.php b/resources/views/produksi-keuangan.blade.php new file mode 100644 index 0000000..8f83a81 --- /dev/null +++ b/resources/views/produksi-keuangan.blade.php @@ -0,0 +1,541 @@ +@extends('template') +@section('title', 'Penjualan') + +@section('content') +
+
+
+
+

Penjualan

+
+
+ +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + + +
+
+ + + + + + + + + + + + + + @forelse ($penjualans as $penjualan) + + + + + + + + + + + + + + + + @empty + + + + @endforelse + +
NoTanggalProdukJumlah (Kg)Harga (Kg)TotalAksi
+ {{ $penjualans->firstItem() + $loop->index }} + + {{ \Carbon\Carbon::parse($penjualan->tanggal_penjualan)->translatedFormat('d F Y') }} + + {{ $produks[$penjualan->jenis_produk] ?? '-' }} + +{{ rtrim(rtrim(number_format($penjualan->berat_terjual, 2, ',', '.'), '0'), ',') }} kg + + Rp {{ number_format($penjualan->harga_satuan, 0, ',', '.') }} + + Rp {{ number_format($penjualan->total_penjualan, 0, ',', '.') }} + + + + @auth + @if (auth()->user()->isAdmin()) + + @endif + @endauth +
+ Data penjualan belum tersedia +
+
+
+ + + + + +
+
+
+
+ + + + + + + + + +@endsection + + + +@section('scripts') + +@endsection diff --git a/resources/views/profil.blade.php b/resources/views/profil.blade.php new file mode 100644 index 0000000..2a09b13 --- /dev/null +++ b/resources/views/profil.blade.php @@ -0,0 +1,287 @@ +@extends('template') +@section('title', 'Profil') + +@section('content') +
+
+
+
+

Profil

+
+
+
+
+ Informasi Profil +
+
+
+ + + +
+ + +
+
+ +
+
+
+ +
+
+
+ +
+
+
+ Nama Lengkap +
+ {{ $user->isKaryawan() ? $karyawan?->nama_karyawan : $user->name }} +
+
+
+ Email +
{{ $user->email }}
+
+ @if ($user->isKaryawan()) +
+ No. Telepon +
{{ $karyawan?->no_hp ?? '-' }}
+
+ +
+ Alamat +
{{ $karyawan?->alamat ?? '-' }}
+
+ @endif +
+
+
+
+ +
+
+ @csrf + @method('PATCH') + +
+
+
+ + + @error('name') +
{{ $message }}
+ @enderror +
+
+ +
+
+ + + + @error('email') +
{{ $message }}
+ @enderror +
+
+
+ + @if ($user->isKaryawan()) +
+
+
+ + + + @error('no_hp') +
{{ $message }}
+ @enderror +
+
+ +
+
+ + + + + + @error('alamat') +
{{ $message }}
+ @enderror +
+
+
+ @endif + + + +
+
+ + +
+
+ @csrf + @method('PATCH') + +
+ +
+ + + + + @error('current_password') +
{{ $message }}
+ @enderror +
+
+ + +
+ +
+ + + + + + @error('password') +
{{ $message }}
+ @enderror +
+
+ + +
+ +
+ + + + +
+
+ + + +
+
+ +
+
+
+ +
+
+
+@endsection +@section('scripts') + + +@endsection diff --git a/resources/views/profile/edit.blade.php b/resources/views/profile/edit.blade.php new file mode 100644 index 0000000..e0e1d38 --- /dev/null +++ b/resources/views/profile/edit.blade.php @@ -0,0 +1,29 @@ + + +

+ {{ __('Profile') }} +

+
+ +
+
+
+
+ @include('profile.partials.update-profile-information-form') +
+
+ +
+
+ @include('profile.partials.update-password-form') +
+
+ +
+
+ @include('profile.partials.delete-user-form') +
+
+
+
+
diff --git a/resources/views/profile/partials/delete-user-form.blade.php b/resources/views/profile/partials/delete-user-form.blade.php new file mode 100644 index 0000000..edeeb4a --- /dev/null +++ b/resources/views/profile/partials/delete-user-form.blade.php @@ -0,0 +1,55 @@ +
+
+

+ {{ __('Delete Account') }} +

+ +

+ {{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.') }} +

+
+ + {{ __('Delete Account') }} + + +
+ @csrf + @method('delete') + +

+ {{ __('Are you sure you want to delete your account?') }} +

+ +

+ {{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.') }} +

+ +
+ + + + + +
+ +
+ + {{ __('Cancel') }} + + + + {{ __('Delete Account') }} + +
+
+
+
diff --git a/resources/views/profile/partials/update-password-form.blade.php b/resources/views/profile/partials/update-password-form.blade.php new file mode 100644 index 0000000..eaca1ac --- /dev/null +++ b/resources/views/profile/partials/update-password-form.blade.php @@ -0,0 +1,48 @@ +
+
+

+ {{ __('Update Password') }} +

+ +

+ {{ __('Ensure your account is using a long, random password to stay secure.') }} +

+
+ +
+ @csrf + @method('put') + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ {{ __('Save') }} + + @if (session('status') === 'password-updated') +

{{ __('Saved.') }}

+ @endif +
+
+
diff --git a/resources/views/profile/partials/update-profile-information-form.blade.php b/resources/views/profile/partials/update-profile-information-form.blade.php new file mode 100644 index 0000000..5ae3d35 --- /dev/null +++ b/resources/views/profile/partials/update-profile-information-form.blade.php @@ -0,0 +1,64 @@ +
+
+

+ {{ __('Profile Information') }} +

+ +

+ {{ __("Update your account's profile information and email address.") }} +

+
+ +
+ @csrf +
+ +
+ @csrf + @method('patch') + +
+ + + +
+ +
+ + + + + @if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail()) +
+

+ {{ __('Your email address is unverified.') }} + + +

+ + @if (session('status') === 'verification-link-sent') +

+ {{ __('A new verification link has been sent to your email address.') }} +

+ @endif +
+ @endif +
+ +
+ {{ __('Save') }} + + @if (session('status') === 'profile-updated') +

{{ __('Saved.') }}

+ @endif +
+
+
diff --git a/resources/views/template.blade.php b/resources/views/template.blade.php new file mode 100644 index 0000000..744a8dc --- /dev/null +++ b/resources/views/template.blade.php @@ -0,0 +1,247 @@ + + + + +LayerFarm | @yield('title') + + + + + + + + + + + + +
+
+
+ {{-- --}} + + + + +
+ +
+ + + + @yield('content') + + + + + + + + + + + + + + + + + + + @yield('scripts') + + + + diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 0000000..b7355d7 --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,277 @@ + + + + + + + {{ config('app.name', 'Laravel') }} + + + + + + + @if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot'))) + @vite(['resources/css/app.css', 'resources/js/app.js']) + @else + + @endif + + +
+ @if (Route::has('login')) + + @endif +
+
+
+
+

Let's get started

+

Laravel has an incredibly rich ecosystem.
We suggest starting with the following.

+ + +
+
+ {{-- Laravel Logo --}} + + + + + + + + + + + {{-- Light Mode 12 SVG --}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- Dark Mode 12 SVG --}} + +
+
+
+
+ + @if (Route::has('login')) + + @endif + + diff --git a/routes/auth.php b/routes/auth.php new file mode 100644 index 0000000..3926ecf --- /dev/null +++ b/routes/auth.php @@ -0,0 +1,59 @@ +group(function () { + Route::get('register', [RegisteredUserController::class, 'create']) + ->name('register'); + + Route::post('register', [RegisteredUserController::class, 'store']); + + Route::get('login', [AuthenticatedSessionController::class, 'create']) + ->name('login'); + + Route::post('login', [AuthenticatedSessionController::class, 'store']); + + Route::get('forgot-password', [PasswordResetLinkController::class, 'create']) + ->name('password.request'); + + Route::post('forgot-password', [PasswordResetLinkController::class, 'store']) + ->name('password.email'); + + Route::get('reset-password/{token}', [NewPasswordController::class, 'create']) + ->name('password.reset'); + + Route::post('reset-password', [NewPasswordController::class, 'store']) + ->name('password.store'); +}); + +Route::middleware('auth')->group(function () { + Route::get('verify-email', EmailVerificationPromptController::class) + ->name('verification.notice'); + + Route::get('verify-email/{id}/{hash}', VerifyEmailController::class) + ->middleware(['signed', 'throttle:6,1']) + ->name('verification.verify'); + + Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store']) + ->middleware('throttle:6,1') + ->name('verification.send'); + + Route::get('confirm-password', [ConfirmablePasswordController::class, 'show']) + ->name('password.confirm'); + + Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']); + + Route::put('password', [PasswordController::class, 'update'])->name('password.update'); + + Route::post('logout', [AuthenticatedSessionController::class, 'destroy']) + ->name('logout'); +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..3c9adf1 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,8 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..04293b8 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,101 @@ +route('login'); +// }); + +Route::get('/', action: fn() => Auth::check() ? redirect()->route('beranda') : redirect()->route('login')); +// Route::get('/', function () { +// return view('welcome'); +// }); + +// Semua route harus login +Route::middleware('auth')->group(function () { + + /* + SEMUA USER LOGIN + */ + Route::get('/beranda', [HomeController::class, 'index'])->name('beranda'); + + Route::get('/profil', [ProfilController::class, 'index'])->name('profil'); + Route::patch('/profil/{id}', [ProfilController::class, 'update'])->name('profil.update'); + Route::patch('/profil/{id}/password', [ProfilController::class, 'updatePassword']) + ->name('profil.password.update'); + + + /* + ADMIN + KARYAWAN + (tanpa delete) + */ + Route::middleware([CheckRole::class . ':admin,karyawan'])->group(function () { + + Route::prefix('pakan')->group(function () { + Route::get('/', [PakanController::class, 'index'])->name('pakan'); + Route::post('/store', [PakanController::class, 'store'])->name('pakan.store'); + Route::put('/{id}', [PakanController::class, 'update'])->name('pakan.update'); + }); + + Route::prefix('ayam')->group(function () { + Route::get('/', [AyamController::class, 'index'])->name('ayam'); + Route::post('/store', [AyamController::class, 'store'])->name('ayam.store'); + Route::put('/{id}', [AyamController::class, 'update'])->name('ayam.update'); + }); + + Route::prefix('hasil')->group(function () { + Route::get('/', [HasilController::class, 'index'])->name('hasil'); + Route::post('/', [HasilController::class, 'store'])->name('hasil.store'); + Route::put('/{id}', [HasilController::class, 'update'])->name('hasil.update'); + }); + + Route::get('/keuangan', [KeuanganController::class, 'index'])->name('keuangan.index'); + Route::post('/keuangan', [KeuanganController::class, 'store'])->name('keuangan.store'); + Route::put('/keuangan/{id}', [KeuanganController::class, 'update'])->name('keuangan.update'); + }); + + + /* + ADMIN ONLY + (boleh delete + master) + */ + Route::middleware([CheckRole::class . ':admin'])->group(function () { + + // DELETE data operasional + Route::delete('/pakan/{id}', [PakanController::class, 'destroy'])->name('pakan.delete'); + Route::delete('/ayam/{id}', [AyamController::class, 'destroy'])->name('ayam.delete'); + Route::delete('/hasil/{id}', [HasilController::class, 'destroy'])->name('hasil.destroy'); + Route::delete('/keuangan/{id}', [KeuanganController::class, 'destroy'])->name('keuangan.delete'); + + // Manajemen karyawan + Route::get('/karyawan', [KaryawanController::class, 'index'])->name('karyawan'); + Route::post('/karyawan', [KaryawanController::class, 'store'])->name('karyawan.store'); + Route::put('/karyawan/{id}', [KaryawanController::class, 'update'])->name('karyawan.update'); + Route::patch('/karyawan/{id}/nonaktif', [KaryawanController::class, 'nonaktifkan'])->name('karyawan.nonaktifkan'); + Route::patch('/karyawan/{id}/aktif', [KaryawanController::class, 'aktifkan'])->name('karyawan.aktifkan'); + + // Gaji & laporan + Route::get('/gaji', [GajiController::class, 'index'])->name('gaji'); + Route::post('/gaji', [GajiController::class, 'store'])->name('gaji.store'); + + Route::get('/laporan', [LaporanController::class, 'index'])->name('laporan'); + Route::get('/laporan/export', [LaporanController::class, 'export'])->name('laporan.export'); + }); +}); diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..fedb287 --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,4 @@ +* +!private/ +!public/ +!.gitignore diff --git a/storage/app/private/.gitignore b/storage/app/private/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/private/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..c29eb1a --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,21 @@ +import defaultTheme from 'tailwindcss/defaultTheme'; +import forms from '@tailwindcss/forms'; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php', + './storage/framework/views/*.php', + './resources/views/**/*.blade.php', + ], + + theme: { + extend: { + fontFamily: { + sans: ['Figtree', ...defaultTheme.fontFamily.sans], + }, + }, + }, + + plugins: [forms], +}; diff --git a/tests/Feature/Auth/AuthenticationTest.php b/tests/Feature/Auth/AuthenticationTest.php new file mode 100644 index 0000000..13dcb7c --- /dev/null +++ b/tests/Feature/Auth/AuthenticationTest.php @@ -0,0 +1,54 @@ +get('/login'); + + $response->assertStatus(200); + } + + public function test_users_can_authenticate_using_the_login_screen(): void + { + $user = User::factory()->create(); + + $response = $this->post('/login', [ + 'email' => $user->email, + 'password' => 'password', + ]); + + $this->assertAuthenticated(); + $response->assertRedirect(route('dashboard', absolute: false)); + } + + public function test_users_can_not_authenticate_with_invalid_password(): void + { + $user = User::factory()->create(); + + $this->post('/login', [ + 'email' => $user->email, + 'password' => 'wrong-password', + ]); + + $this->assertGuest(); + } + + public function test_users_can_logout(): void + { + $user = User::factory()->create(); + + $response = $this->actingAs($user)->post('/logout'); + + $this->assertGuest(); + $response->assertRedirect('/'); + } +} diff --git a/tests/Feature/Auth/EmailVerificationTest.php b/tests/Feature/Auth/EmailVerificationTest.php new file mode 100644 index 0000000..705570b --- /dev/null +++ b/tests/Feature/Auth/EmailVerificationTest.php @@ -0,0 +1,58 @@ +unverified()->create(); + + $response = $this->actingAs($user)->get('/verify-email'); + + $response->assertStatus(200); + } + + public function test_email_can_be_verified(): void + { + $user = User::factory()->unverified()->create(); + + Event::fake(); + + $verificationUrl = URL::temporarySignedRoute( + 'verification.verify', + now()->addMinutes(60), + ['id' => $user->id, 'hash' => sha1($user->email)] + ); + + $response = $this->actingAs($user)->get($verificationUrl); + + Event::assertDispatched(Verified::class); + $this->assertTrue($user->fresh()->hasVerifiedEmail()); + $response->assertRedirect(route('dashboard', absolute: false).'?verified=1'); + } + + public function test_email_is_not_verified_with_invalid_hash(): void + { + $user = User::factory()->unverified()->create(); + + $verificationUrl = URL::temporarySignedRoute( + 'verification.verify', + now()->addMinutes(60), + ['id' => $user->id, 'hash' => sha1('wrong-email')] + ); + + $this->actingAs($user)->get($verificationUrl); + + $this->assertFalse($user->fresh()->hasVerifiedEmail()); + } +} diff --git a/tests/Feature/Auth/PasswordConfirmationTest.php b/tests/Feature/Auth/PasswordConfirmationTest.php new file mode 100644 index 0000000..ff85721 --- /dev/null +++ b/tests/Feature/Auth/PasswordConfirmationTest.php @@ -0,0 +1,44 @@ +create(); + + $response = $this->actingAs($user)->get('/confirm-password'); + + $response->assertStatus(200); + } + + public function test_password_can_be_confirmed(): void + { + $user = User::factory()->create(); + + $response = $this->actingAs($user)->post('/confirm-password', [ + 'password' => 'password', + ]); + + $response->assertRedirect(); + $response->assertSessionHasNoErrors(); + } + + public function test_password_is_not_confirmed_with_invalid_password(): void + { + $user = User::factory()->create(); + + $response = $this->actingAs($user)->post('/confirm-password', [ + 'password' => 'wrong-password', + ]); + + $response->assertSessionHasErrors(); + } +} diff --git a/tests/Feature/Auth/PasswordResetTest.php b/tests/Feature/Auth/PasswordResetTest.php new file mode 100644 index 0000000..aa50350 --- /dev/null +++ b/tests/Feature/Auth/PasswordResetTest.php @@ -0,0 +1,73 @@ +get('/forgot-password'); + + $response->assertStatus(200); + } + + public function test_reset_password_link_can_be_requested(): void + { + Notification::fake(); + + $user = User::factory()->create(); + + $this->post('/forgot-password', ['email' => $user->email]); + + Notification::assertSentTo($user, ResetPassword::class); + } + + public function test_reset_password_screen_can_be_rendered(): void + { + Notification::fake(); + + $user = User::factory()->create(); + + $this->post('/forgot-password', ['email' => $user->email]); + + Notification::assertSentTo($user, ResetPassword::class, function ($notification) { + $response = $this->get('/reset-password/'.$notification->token); + + $response->assertStatus(200); + + return true; + }); + } + + public function test_password_can_be_reset_with_valid_token(): void + { + Notification::fake(); + + $user = User::factory()->create(); + + $this->post('/forgot-password', ['email' => $user->email]); + + Notification::assertSentTo($user, ResetPassword::class, function ($notification) use ($user) { + $response = $this->post('/reset-password', [ + 'token' => $notification->token, + 'email' => $user->email, + 'password' => 'password', + 'password_confirmation' => 'password', + ]); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect(route('login')); + + return true; + }); + } +} diff --git a/tests/Feature/Auth/PasswordUpdateTest.php b/tests/Feature/Auth/PasswordUpdateTest.php new file mode 100644 index 0000000..ca28c6c --- /dev/null +++ b/tests/Feature/Auth/PasswordUpdateTest.php @@ -0,0 +1,51 @@ +create(); + + $response = $this + ->actingAs($user) + ->from('/profile') + ->put('/password', [ + 'current_password' => 'password', + 'password' => 'new-password', + 'password_confirmation' => 'new-password', + ]); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect('/profile'); + + $this->assertTrue(Hash::check('new-password', $user->refresh()->password)); + } + + public function test_correct_password_must_be_provided_to_update_password(): void + { + $user = User::factory()->create(); + + $response = $this + ->actingAs($user) + ->from('/profile') + ->put('/password', [ + 'current_password' => 'wrong-password', + 'password' => 'new-password', + 'password_confirmation' => 'new-password', + ]); + + $response + ->assertSessionHasErrorsIn('updatePassword', 'current_password') + ->assertRedirect('/profile'); + } +} diff --git a/tests/Feature/Auth/RegistrationTest.php b/tests/Feature/Auth/RegistrationTest.php new file mode 100644 index 0000000..1489d0e --- /dev/null +++ b/tests/Feature/Auth/RegistrationTest.php @@ -0,0 +1,31 @@ +get('/register'); + + $response->assertStatus(200); + } + + public function test_new_users_can_register(): void + { + $response = $this->post('/register', [ + 'name' => 'Test User', + 'email' => 'test@example.com', + 'password' => 'password', + 'password_confirmation' => 'password', + ]); + + $this->assertAuthenticated(); + $response->assertRedirect(route('dashboard', absolute: false)); + } +} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/ProfileTest.php b/tests/Feature/ProfileTest.php new file mode 100644 index 0000000..252fdcc --- /dev/null +++ b/tests/Feature/ProfileTest.php @@ -0,0 +1,99 @@ +create(); + + $response = $this + ->actingAs($user) + ->get('/profile'); + + $response->assertOk(); + } + + public function test_profile_information_can_be_updated(): void + { + $user = User::factory()->create(); + + $response = $this + ->actingAs($user) + ->patch('/profile', [ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect('/profile'); + + $user->refresh(); + + $this->assertSame('Test User', $user->name); + $this->assertSame('test@example.com', $user->email); + $this->assertNull($user->email_verified_at); + } + + public function test_email_verification_status_is_unchanged_when_the_email_address_is_unchanged(): void + { + $user = User::factory()->create(); + + $response = $this + ->actingAs($user) + ->patch('/profile', [ + 'name' => 'Test User', + 'email' => $user->email, + ]); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect('/profile'); + + $this->assertNotNull($user->refresh()->email_verified_at); + } + + public function test_user_can_delete_their_account(): void + { + $user = User::factory()->create(); + + $response = $this + ->actingAs($user) + ->delete('/profile', [ + 'password' => 'password', + ]); + + $response + ->assertSessionHasNoErrors() + ->assertRedirect('/'); + + $this->assertGuest(); + $this->assertNull($user->fresh()); + } + + public function test_correct_password_must_be_provided_to_delete_account(): void + { + $user = User::factory()->create(); + + $response = $this + ->actingAs($user) + ->from('/profile') + ->delete('/profile', [ + 'password' => 'wrong-password', + ]); + + $response + ->assertSessionHasErrorsIn('userDeletion', 'password') + ->assertRedirect('/profile'); + + $this->assertNotNull($user->fresh()); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..fe1ffc2 --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +});