From 3d31201a05dce80efebef24723c8096c7449c4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Ti=E1=BA=BFn=20D=C5=A9ng?= <1stnguyendung@gmail.com> Date: Wed, 11 May 2022 21:09:39 +0700 Subject: [PATCH] 11/5/2022 --- app/Http/Controllers/DUNGA.php | 120 +- app/Http/Controllers/dgaAdmin/Crypt/AES.php | 197 + app/Http/Controllers/dgaAdmin/Crypt/Base.php | 2684 +++++++++ .../Controllers/dgaAdmin/Crypt/Blowfish.php | 644 +++ app/Http/Controllers/dgaAdmin/Crypt/DES.php | 1516 +++++ app/Http/Controllers/dgaAdmin/Crypt/Hash.php | 928 +++ .../dgaAdmin/Crypt/Math/BigInteger.php | 3833 +++++++++++++ app/Http/Controllers/dgaAdmin/Crypt/RC2.php | 761 +++ app/Http/Controllers/dgaAdmin/Crypt/RC4.php | 366 ++ app/Http/Controllers/dgaAdmin/Crypt/RSA.php | 3349 +++++++++++ .../Controllers/dgaAdmin/Crypt/Random.php | 341 ++ .../Controllers/dgaAdmin/Crypt/Rijndael.php | 1050 ++++ .../Controllers/dgaAdmin/Crypt/TripleDES.php | 517 ++ .../Controllers/dgaAdmin/Crypt/Twofish.php | 889 +++ .../dgaAdmin/HistoryController.php | 17 + .../Controllers/dgaAdmin/HomeController.php | 167 + app/Http/Controllers/dgaAdmin/MiniGame.php | 408 ++ app/Http/Controllers/dgaAdmin/MomoApi.php | 788 +++ .../Controllers/dgaAdmin/MomoController.php | 323 ++ app/Http/Resources/HistoryResource.php | 26 + app/Http/Resources/MomoResource.php | 4 +- app/Models/HistoryDayMission.php | 19 + app/Models/HistoryPlay.php | 23 + app/Models/Momo.php | 10 + app/Models/Setting.php | 43 + app/Providers/RouteServiceProvider.php | 5 + config/app.php | 2 +- .../2022_05_01_134738_create_momos_table.php | 2 +- ...022_05_02_012840_create_settings_table.php | 58 + ...5_02_031023_create_history_plays_table.php | 41 + ...1858_create_history_day_missions_table.php | 37 + public/dgaAdmin/assets/css/dashlite.css | 10 + public/dgaAdmin/assets/css/editors/quill.css | 1117 ++++ .../assets/css/editors/summernote.css | 1 + public/dgaAdmin/assets/css/theme.css | 8 + public/dgaAdmin/assets/fonts/Nioicon.eot | Bin 0 -> 307000 bytes public/dgaAdmin/assets/fonts/Nioicon.svg | 1041 ++++ public/dgaAdmin/assets/fonts/Nioicon.ttf | Bin 0 -> 306836 bytes public/dgaAdmin/assets/fonts/Nioicon.woff | Bin 0 -> 306912 bytes public/dgaAdmin/assets/fonts/Nunito-Bold.eot | Bin 0 -> 134876 bytes public/dgaAdmin/assets/fonts/Nunito-Bold.ttf | Bin 0 -> 134708 bytes public/dgaAdmin/assets/fonts/Nunito-Bold.woff | Bin 0 -> 60788 bytes .../dgaAdmin/assets/fonts/Nunito-Bold.woff2 | Bin 0 -> 43608 bytes .../dgaAdmin/assets/fonts/Nunito-Regular.eot | Bin 0 -> 132908 bytes .../dgaAdmin/assets/fonts/Nunito-Regular.ttf | Bin 0 -> 132728 bytes .../dgaAdmin/assets/fonts/Nunito-Regular.woff | Bin 0 -> 59792 bytes .../assets/fonts/Nunito-Regular.woff2 | Bin 0 -> 42732 bytes public/dgaAdmin/assets/fonts/Roboto-Bold.eot | Bin 0 -> 179992 bytes public/dgaAdmin/assets/fonts/Roboto-Bold.ttf | Bin 0 -> 179812 bytes public/dgaAdmin/assets/fonts/Roboto-Bold.woff | Bin 0 -> 93700 bytes .../dgaAdmin/assets/fonts/Roboto-Bold.woff2 | Bin 0 -> 65972 bytes public/dgaAdmin/assets/fonts/Roboto-Light.eot | Bin 0 -> 179720 bytes public/dgaAdmin/assets/fonts/Roboto-Light.ttf | Bin 0 -> 179520 bytes .../dgaAdmin/assets/fonts/Roboto-Light.woff | Bin 0 -> 93120 bytes .../dgaAdmin/assets/fonts/Roboto-Light.woff2 | Bin 0 -> 65512 bytes .../dgaAdmin/assets/fonts/Roboto-Medium.eot | Bin 0 -> 181460 bytes .../dgaAdmin/assets/fonts/Roboto-Medium.ttf | Bin 0 -> 181256 bytes .../dgaAdmin/assets/fonts/Roboto-Medium.woff | Bin 0 -> 94032 bytes .../dgaAdmin/assets/fonts/Roboto-Medium.woff2 | Bin 0 -> 66792 bytes .../dgaAdmin/assets/fonts/Roboto-Regular.eot | Bin 0 -> 181108 bytes .../dgaAdmin/assets/fonts/Roboto-Regular.ttf | Bin 0 -> 180932 bytes .../dgaAdmin/assets/fonts/Roboto-Regular.woff | Bin 0 -> 93388 bytes .../assets/fonts/Roboto-Regular.woff2 | Bin 0 -> 65916 bytes .../assets/fonts/bootstrap-icons.woff | Bin 0 -> 98348 bytes .../assets/fonts/bootstrap-icons.woff2 | Bin 0 -> 74352 bytes .../dgaAdmin/assets/fonts/fa-brands-400.eot | Bin 0 -> 136822 bytes .../dgaAdmin/assets/fonts/fa-brands-400.svg | 3717 ++++++++++++ .../dgaAdmin/assets/fonts/fa-brands-400.ttf | Bin 0 -> 136516 bytes .../dgaAdmin/assets/fonts/fa-brands-400.woff | Bin 0 -> 92136 bytes .../dgaAdmin/assets/fonts/fa-brands-400.woff2 | Bin 0 -> 78460 bytes .../dgaAdmin/assets/fonts/fa-regular-400.eot | Bin 0 -> 34350 bytes .../dgaAdmin/assets/fonts/fa-regular-400.svg | 801 +++ .../dgaAdmin/assets/fonts/fa-regular-400.ttf | Bin 0 -> 34052 bytes .../dgaAdmin/assets/fonts/fa-regular-400.woff | Bin 0 -> 16772 bytes .../assets/fonts/fa-regular-400.woff2 | Bin 0 -> 13548 bytes public/dgaAdmin/assets/fonts/fa-solid-900.eot | Bin 0 -> 204814 bytes public/dgaAdmin/assets/fonts/fa-solid-900.svg | 5028 +++++++++++++++++ public/dgaAdmin/assets/fonts/fa-solid-900.ttf | Bin 0 -> 204528 bytes .../dgaAdmin/assets/fonts/fa-solid-900.woff | Bin 0 -> 104280 bytes .../dgaAdmin/assets/fonts/fa-solid-900.woff2 | Bin 0 -> 80300 bytes public/dgaAdmin/assets/fonts/summernote.eot | Bin 0 -> 12072 bytes public/dgaAdmin/assets/fonts/summernote.ttf | Bin 0 -> 11896 bytes public/dgaAdmin/assets/fonts/summernote.woff | Bin 0 -> 7428 bytes public/dgaAdmin/assets/fonts/summernote.woff2 | Bin 0 -> 6156 bytes public/dgaAdmin/assets/fonts/themify.eot | Bin 0 -> 78748 bytes public/dgaAdmin/assets/fonts/themify.svg | 362 ++ public/dgaAdmin/assets/fonts/themify.ttf | Bin 0 -> 78584 bytes public/dgaAdmin/assets/fonts/themify.woff | Bin 0 -> 56108 bytes .../dgaAdmin/assets/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../assets/images/jsTree/32px-dark.png | Bin 0 -> 6247 bytes public/dgaAdmin/assets/images/jsTree/32px.png | Bin 0 -> 6282 bytes .../assets/images/jsTree/40px-dark.png | Bin 0 -> 6526 bytes public/dgaAdmin/assets/images/jsTree/40px.png | Bin 0 -> 2215 bytes .../assets/images/jsTree/throbber-dark.gif | Bin 0 -> 1464 bytes .../assets/images/jsTree/throbber.gif | Bin 0 -> 1464 bytes public/dgaAdmin/assets/js/bundle.js | 1 + public/dgaAdmin/assets/js/demo-settings.js | 391 ++ public/dgaAdmin/assets/js/dunga.js | 179 + public/dgaAdmin/assets/js/editors.js | 79 + public/dgaAdmin/assets/js/example-chart.js | 42 + public/dgaAdmin/assets/js/gd-hospital.js | 0 .../dgaAdmin/assets/js/libs/datatable-btns.js | 1 + .../dgaAdmin/assets/js/libs/editors/quill.js | 4176 ++++++++++++++ .../assets/js/libs/editors/summernote.js | 1 + public/dgaAdmin/assets/js/scripts.js | 1 + public/themes/js/script.js | 26 +- resources/views/dayMission.blade.php | 43 +- resources/views/dgaAdmin/addMomo.blade.php | 357 ++ resources/views/dgaAdmin/app.blade.php | 344 ++ resources/views/dgaAdmin/history.blade.php | 89 + resources/views/dgaAdmin/home.blade.php | 1249 ++++ resources/views/dgaAdmin/setting.blade.php | 366 ++ resources/views/game.blade.php | 856 +-- resources/views/welcome.blade.php | 18 +- routes/admin.php | 37 + routes/api.php | 3 + routes/web.php | 4 +- 117 files changed, 38921 insertions(+), 595 deletions(-) create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/AES.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Base.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Blowfish.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/DES.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Hash.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Math/BigInteger.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/RC2.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/RC4.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/RSA.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Random.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Rijndael.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/TripleDES.php create mode 100644 app/Http/Controllers/dgaAdmin/Crypt/Twofish.php create mode 100644 app/Http/Controllers/dgaAdmin/HistoryController.php create mode 100644 app/Http/Controllers/dgaAdmin/HomeController.php create mode 100644 app/Http/Controllers/dgaAdmin/MiniGame.php create mode 100644 app/Http/Controllers/dgaAdmin/MomoApi.php create mode 100644 app/Http/Controllers/dgaAdmin/MomoController.php create mode 100644 app/Http/Resources/HistoryResource.php create mode 100644 app/Models/HistoryDayMission.php create mode 100644 app/Models/HistoryPlay.php create mode 100644 app/Models/Setting.php create mode 100644 database/migrations/2022_05_02_012840_create_settings_table.php create mode 100644 database/migrations/2022_05_02_031023_create_history_plays_table.php create mode 100644 database/migrations/2022_05_10_061858_create_history_day_missions_table.php create mode 100644 public/dgaAdmin/assets/css/dashlite.css create mode 100644 public/dgaAdmin/assets/css/editors/quill.css create mode 100644 public/dgaAdmin/assets/css/editors/summernote.css create mode 100644 public/dgaAdmin/assets/css/theme.css create mode 100644 public/dgaAdmin/assets/fonts/Nioicon.eot create mode 100644 public/dgaAdmin/assets/fonts/Nioicon.svg create mode 100644 public/dgaAdmin/assets/fonts/Nioicon.ttf create mode 100644 public/dgaAdmin/assets/fonts/Nioicon.woff create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Bold.eot create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Bold.ttf create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Bold.woff create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Bold.woff2 create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Regular.eot create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Regular.ttf create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Regular.woff create mode 100644 public/dgaAdmin/assets/fonts/Nunito-Regular.woff2 create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Bold.eot create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Bold.ttf create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Bold.woff create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Bold.woff2 create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Light.eot create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Light.ttf create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Light.woff create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Light.woff2 create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Medium.eot create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Medium.ttf create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Medium.woff create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Medium.woff2 create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Regular.eot create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Regular.ttf create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Regular.woff create mode 100644 public/dgaAdmin/assets/fonts/Roboto-Regular.woff2 create mode 100644 public/dgaAdmin/assets/fonts/bootstrap-icons.woff create mode 100644 public/dgaAdmin/assets/fonts/bootstrap-icons.woff2 create mode 100644 public/dgaAdmin/assets/fonts/fa-brands-400.eot create mode 100644 public/dgaAdmin/assets/fonts/fa-brands-400.svg create mode 100644 public/dgaAdmin/assets/fonts/fa-brands-400.ttf create mode 100644 public/dgaAdmin/assets/fonts/fa-brands-400.woff create mode 100644 public/dgaAdmin/assets/fonts/fa-brands-400.woff2 create mode 100644 public/dgaAdmin/assets/fonts/fa-regular-400.eot create mode 100644 public/dgaAdmin/assets/fonts/fa-regular-400.svg create mode 100644 public/dgaAdmin/assets/fonts/fa-regular-400.ttf create mode 100644 public/dgaAdmin/assets/fonts/fa-regular-400.woff create mode 100644 public/dgaAdmin/assets/fonts/fa-regular-400.woff2 create mode 100644 public/dgaAdmin/assets/fonts/fa-solid-900.eot create mode 100644 public/dgaAdmin/assets/fonts/fa-solid-900.svg create mode 100644 public/dgaAdmin/assets/fonts/fa-solid-900.ttf create mode 100644 public/dgaAdmin/assets/fonts/fa-solid-900.woff create mode 100644 public/dgaAdmin/assets/fonts/fa-solid-900.woff2 create mode 100644 public/dgaAdmin/assets/fonts/summernote.eot create mode 100644 public/dgaAdmin/assets/fonts/summernote.ttf create mode 100644 public/dgaAdmin/assets/fonts/summernote.woff create mode 100644 public/dgaAdmin/assets/fonts/summernote.woff2 create mode 100644 public/dgaAdmin/assets/fonts/themify.eot create mode 100644 public/dgaAdmin/assets/fonts/themify.svg create mode 100644 public/dgaAdmin/assets/fonts/themify.ttf create mode 100644 public/dgaAdmin/assets/fonts/themify.woff create mode 100644 public/dgaAdmin/assets/fonts/tinymce-mobile.woff create mode 100644 public/dgaAdmin/assets/images/jsTree/32px-dark.png create mode 100644 public/dgaAdmin/assets/images/jsTree/32px.png create mode 100644 public/dgaAdmin/assets/images/jsTree/40px-dark.png create mode 100644 public/dgaAdmin/assets/images/jsTree/40px.png create mode 100644 public/dgaAdmin/assets/images/jsTree/throbber-dark.gif create mode 100644 public/dgaAdmin/assets/images/jsTree/throbber.gif create mode 100644 public/dgaAdmin/assets/js/bundle.js create mode 100644 public/dgaAdmin/assets/js/demo-settings.js create mode 100644 public/dgaAdmin/assets/js/dunga.js create mode 100644 public/dgaAdmin/assets/js/editors.js create mode 100644 public/dgaAdmin/assets/js/example-chart.js create mode 100644 public/dgaAdmin/assets/js/gd-hospital.js create mode 100644 public/dgaAdmin/assets/js/libs/datatable-btns.js create mode 100644 public/dgaAdmin/assets/js/libs/editors/quill.js create mode 100644 public/dgaAdmin/assets/js/libs/editors/summernote.js create mode 100644 public/dgaAdmin/assets/js/scripts.js create mode 100644 resources/views/dgaAdmin/addMomo.blade.php create mode 100644 resources/views/dgaAdmin/app.blade.php create mode 100644 resources/views/dgaAdmin/history.blade.php create mode 100644 resources/views/dgaAdmin/home.blade.php create mode 100644 resources/views/dgaAdmin/setting.blade.php create mode 100644 routes/admin.php diff --git a/app/Http/Controllers/DUNGA.php b/app/Http/Controllers/DUNGA.php index 2167850..8abd0d0 100644 --- a/app/Http/Controllers/DUNGA.php +++ b/app/Http/Controllers/DUNGA.php @@ -6,48 +6,136 @@ use Illuminate\Http\Request; use App\Http\Resources\ContactResource; use App\Models\Contact; use App\Http\Resources\MomoResource; +use App\Http\Resources\HistoryResource; use App\Models\Momo; +use App\Models\Setting; +use App\Models\HistoryPlay; +use App\Models\HistoryDayMission; +use Carbon\Carbon; class DUNGA extends Controller { - public function settings() { + public function settings() + { + + $setting = Setting::first(); + return response()->json(array( 'status' => true, 'message' => 'Thành công', 'contacts' => ContactResource::collection(Contact::where('status', 1)->get()), - 'note' => '

HỆ THỐNG CHẲN LẺ TÀI XỈU UY TÍN AUTO THANH TOÁN TỰ ĐỘNG



ĐỌC THÔNG BÁO TRÁNH MẤT TIỀN : (MỚI)

- CHÚ Ý: KHÔNG NÊN MÃI CHƠI 1 SỐ VÌ SỐ THAY ĐỔI LIÊN TỤC , NÊN TẢI LẠI TRANG SAU 10-20P VÀ LẤY SỐ HẠN MỨC THẤP CHƠI TIẾP . NẾU SỐ TRÊN WED ĐÃ TẮT VUI LÒNG KHÔNG CHƠI , KHI CHƠI TRÁNH KHÔNG TRẢ ĐƠN


- Lỗi phải báo ngay trong 6 tiếng , tránh mất giao dịch sẽ không xữ lý được


', - 'ads' => '', - 'active' => 1, - 'history' => 1, - 'only_win' => 1, - 'limit' => 10, - 'week_top' => 1, - 'day_mission' => array( - 'active' => 1, - ) + 'note' => $setting->note, + 'ads' => $setting->ads, + 'active' => $setting->active, + 'history' => $setting->history, + 'only_win' => $setting->only_win, + 'limit' => $setting->limit, + 'week_top' => $setting->week_top, + 'day_mission' => $setting->day_mission, + 'hu' => array( + 'active' => $setting->hu, + 'roles' => array( + '111' + ), + 'amount' => 10000 + ), )); } - public function momo() { + public function momo() + { + $setting = Setting::first(); + $momo = Momo::where('status', '!=', 3)->get(); return response()->json(array( 'status' => true, 'message' => 'Thành công', 'data_momo' => MomoResource::collection(Momo::where('status', 1)->get()), 'game' => array( 'active' => array('chanle2', 'chanle', 'taixiu2', 'taixiu', 'x3', 'hieu2so', 'lo', 'gap3'), - 'html' => view('game')->render() + 'html' => view('game', compact('momo', 'setting'))->render() ) )); } - public function minigame(Request $request) { + public function minigame(Request $request) + { + $setting = Setting::first(); if ($request->game == 'day_mission') { - $game = view('dayMission')->render(); + $total = HistoryDayMission::sum('receive'); + $dayLevel = explode('|', $setting->level_day); + $receiveLevel = explode('|', $setting->gift_day); + $gift = array(); + for ($i = 0; $i < count($receiveLevel); $i++) { + $json = array( + 'level' => $dayLevel[$i], + 'gift' => $receiveLevel[$i] + ); + array_push($gift, $json); + } + $day_mission = array( + 'data' => $gift + ); + $game = view('dayMission', compact('day_mission', 'setting', 'total'))->render(); } return response()->json(array( + 'status' => true, 'message' => 'Thành công', 'html' => $game, - 'game' => $request->game + 'game' => $request->game )); } + + public function history() + { + $setting = Setting::first(); + return response()->json(array( + 'status' => true, + 'message' => 'Thành công', + 'history' => array( + 'status' => true, + 'message' => 'SUCCESS', + 'data' => HistoryResource::collection(HistoryPlay::limit($setting->limit)->get()), + ) + )); + } + + public function hu() + { + return response()->json(array( + 'status' => true, + 'message' => 'Thành công', + 'amount' => 11111 + )); + } + + public function checkDayMission(Request $request) + { + $setting = Setting::first(); + $phone = HistoryPlay::whereDate('created_at', Carbon::today())->where('partnerId', $request->phone)->count(); + $amount = HistoryPlay::whereDate('created_at', Carbon::today())->where('partnerId', $request->phone)->sum('amount'); + $turn = HistoryDayMission::whereDate('created_at', Carbon::today())->where('phone', $request->phone)->count(); + if ($phone <= 0) { + return response()->json(array('status' => false, 'message' => 'Oh !! Số điện thoại này chưa chơi game nào, hãy kiểm tra lại')); + } else { + $dayLevel = explode('|', $setting->level_day); + $receiveLevel = explode('|', $setting->gift_day); + for ($i = 0; $i < count($receiveLevel); $i++) { + if ($turn < count($receiveLevel) && $amount >= $dayLevel[$i] && $amount >= $dayLevel[$turn]) { + HistoryDayMission::create([ + 'phone' => $request->phone, + 'amount' => $amount, + 'level' => $dayLevel[$i], + 'receive' => $receiveLevel[$i], + 'status' => 1, + 'pay' => 0 + ]); + } else if ($amount < (int)$dayLevel[$i]) { + return response()->json(array('status' => false, 'message' => 'Bạn cần chơi '.number_format($dayLevel[$i] - $amount).' nữa !')); + } + } + return response()->json(array('status' => true, 'html' => 'Thành công vui lòng đợi xử lý')); + } + } + + } diff --git a/app/Http/Controllers/dgaAdmin/Crypt/AES.php b/app/Http/Controllers/dgaAdmin/Crypt/AES.php new file mode 100644 index 0000000..594011e --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/AES.php @@ -0,0 +1,197 @@ + + * setKey('abcdefghijklmnop'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $aes->decrypt($aes->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_AES + * @author Jim Wigginton + * @copyright 2008 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Rijndael + */ +if (!class_exists('Crypt_Rijndael')) { + include_once 'Rijndael.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_AES_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_AES_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_AES_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_AES_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_AES_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of AES. + * + * @package Crypt_AES + * @author Jim Wigginton + * @access public + */ +class Crypt_AES extends Crypt_Rijndael +{ + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'AES'; + + /** + * Dummy function + * + * Since Crypt_AES extends Crypt_Rijndael, this function is, technically, available, but it doesn't do anything. + * + * @see Crypt_Rijndael::setBlockLength() + * @access public + * @param int $length + */ + function setBlockLength($length) + { + return; + } + + /** + * Sets the key length + * + * Valid key lengths are 128, 192, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. + * + * @see Crypt_Rijndael:setKeyLength() + * @access public + * @param int $length + */ + function setKeyLength($length) + { + switch ($length) { + case 160: + $length = 192; + break; + case 224: + $length = 256; + } + parent::setKeyLength($length); + } + + /** + * Sets the key. + * + * Rijndael supports five different key lengths, AES only supports three. + * + * @see Crypt_Rijndael:setKey() + * @see setKeyLength() + * @access public + * @param string $key + */ + function setKey($key) + { + parent::setKey($key); + + if (!$this->explicit_key_length) { + $length = strlen($key); + switch (true) { + case $length <= 16: + $this->key_length = 16; + break; + case $length <= 24: + $this->key_length = 24; + break; + default: + $this->key_length = 32; + } + $this->_setEngine(); + } + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/Base.php b/app/Http/Controllers/dgaAdmin/Crypt/Base.php new file mode 100644 index 0000000..1f11cf3 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/Base.php @@ -0,0 +1,2684 @@ + + * @author Hans-Juergen Petrich + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_MODE_CTR', -1); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_MODE_ECB', 1); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_MODE_CBC', 2); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_MODE_CFB', 3); +/** + * Encrypt / decrypt using the Output Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_MODE_OFB', 4); +/** + * Encrypt / decrypt using streaming mode. + */ +define('CRYPT_MODE_STREAM', 5); +/**#@-*/ + +/**#@+ + * @access private + * @see self::Crypt_Base() + * @internal These constants are for internal use only + */ +/** + * Base value for the internal implementation $engine switch + */ +define('CRYPT_ENGINE_INTERNAL', 1); +/** + * Base value for the mcrypt implementation $engine switch + */ +define('CRYPT_ENGINE_MCRYPT', 2); +/** + * Base value for the OpenSSL implementation $engine switch + */ +define('CRYPT_ENGINE_OPENSSL', 3); +/**#@-*/ + +/** + * Base Class for all Crypt_* cipher classes + * + * @package Crypt_Base + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @access public + */ +class Crypt_Base +{ + /** + * The Encryption Mode + * + * @see self::Crypt_Base() + * @var int + * @access private + */ + var $mode; + + /** + * The Block Length of the block cipher + * + * @var int + * @access private + */ + var $block_size = 16; + + /** + * The Key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + + /** + * The Initialization Vector + * + * @see self::setIV() + * @var string + * @access private + */ + var $iv; + + /** + * A "sliding" Initialization Vector + * + * @see self::enableContinuousBuffer() + * @see self::_clearBuffers() + * @var string + * @access private + */ + var $encryptIV; + + /** + * A "sliding" Initialization Vector + * + * @see self::enableContinuousBuffer() + * @see self::_clearBuffers() + * @var string + * @access private + */ + var $decryptIV; + + /** + * Continuous Buffer status + * + * @see self::enableContinuousBuffer() + * @var bool + * @access private + */ + var $continuousBuffer = false; + + /** + * Encryption buffer for CTR, OFB and CFB modes + * + * @see self::encrypt() + * @see self::_clearBuffers() + * @var array + * @access private + */ + var $enbuffer; + + /** + * Decryption buffer for CTR, OFB and CFB modes + * + * @see self::decrypt() + * @see self::_clearBuffers() + * @var array + * @access private + */ + var $debuffer; + + /** + * mcrypt resource for encryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see self::encrypt() + * @var resource + * @access private + */ + var $enmcrypt; + + /** + * mcrypt resource for decryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see self::decrypt() + * @var resource + * @access private + */ + var $demcrypt; + + /** + * Does the enmcrypt resource need to be (re)initialized? + * + * @see Crypt_Twofish::setKey() + * @see Crypt_Twofish::setIV() + * @var bool + * @access private + */ + var $enchanged = true; + + /** + * Does the demcrypt resource need to be (re)initialized? + * + * @see Crypt_Twofish::setKey() + * @see Crypt_Twofish::setIV() + * @var bool + * @access private + */ + var $dechanged = true; + + /** + * mcrypt resource for CFB mode + * + * mcrypt's CFB mode, in (and only in) buffered context, + * is broken, so phpseclib implements the CFB mode by it self, + * even when the mcrypt php extension is available. + * + * In order to do the CFB-mode work (fast) phpseclib + * use a separate ECB-mode mcrypt resource. + * + * @link http://phpseclib.sourceforge.net/cfb-demo.phps + * @see self::encrypt() + * @see self::decrypt() + * @see self::_setupMcrypt() + * @var resource + * @access private + */ + var $ecb; + + /** + * Optimizing value while CFB-encrypting + * + * Only relevant if $continuousBuffer enabled + * and $engine == CRYPT_ENGINE_MCRYPT + * + * It's faster to re-init $enmcrypt if + * $buffer bytes > $cfb_init_len than + * using the $ecb resource furthermore. + * + * This value depends of the chosen cipher + * and the time it would be needed for it's + * initialization [by mcrypt_generic_init()] + * which, typically, depends on the complexity + * on its internaly Key-expanding algorithm. + * + * @see self::encrypt() + * @var int + * @access private + */ + var $cfb_init_len = 600; + + /** + * Does internal cipher state need to be (re)initialized? + * + * @see self::setKey() + * @see self::setIV() + * @see self::disableContinuousBuffer() + * @var bool + * @access private + */ + var $changed = true; + + /** + * Padding status + * + * @see self::enablePadding() + * @var bool + * @access private + */ + var $padding = true; + + /** + * Is the mode one that is paddable? + * + * @see self::Crypt_Base() + * @var bool + * @access private + */ + var $paddable = false; + + /** + * Holds which crypt engine internaly should be use, + * which will be determined automatically on __construct() + * + * Currently available $engines are: + * - CRYPT_ENGINE_OPENSSL (very fast, php-extension: openssl, extension_loaded('openssl') required) + * - CRYPT_ENGINE_MCRYPT (fast, php-extension: mcrypt, extension_loaded('mcrypt') required) + * - CRYPT_ENGINE_INTERNAL (slower, pure php-engine, no php-extension required) + * + * @see self::_setEngine() + * @see self::encrypt() + * @see self::decrypt() + * @var int + * @access private + */ + var $engine; + + /** + * Holds the preferred crypt engine + * + * @see self::_setEngine() + * @see self::setPreferredEngine() + * @var int + * @access private + */ + var $preferredEngine; + + /** + * The mcrypt specific name of the cipher + * + * Only used if $engine == CRYPT_ENGINE_MCRYPT + * + * @link http://www.php.net/mcrypt_module_open + * @link http://www.php.net/mcrypt_list_algorithms + * @see self::_setupMcrypt() + * @var string + * @access private + */ + var $cipher_name_mcrypt; + + /** + * The openssl specific name of the cipher + * + * Only used if $engine == CRYPT_ENGINE_OPENSSL + * + * @link http://www.php.net/openssl-get-cipher-methods + * @var string + * @access private + */ + var $cipher_name_openssl; + + /** + * The openssl specific name of the cipher in ECB mode + * + * If OpenSSL does not support the mode we're trying to use (CTR) + * it can still be emulated with ECB mode. + * + * @link http://www.php.net/openssl-get-cipher-methods + * @var string + * @access private + */ + var $cipher_name_openssl_ecb; + + /** + * The default salt used by setPassword() + * + * @see self::setPassword() + * @var string + * @access private + */ + var $password_default_salt = 'phpseclib/salt'; + + /** + * The namespace used by the cipher for its constants. + * + * ie: AES.php is using CRYPT_AES_MODE_* for its constants + * so $const_namespace is AES + * + * DES.php is using CRYPT_DES_MODE_* for its constants + * so $const_namespace is DES... and so on + * + * All CRYPT_<$const_namespace>_MODE_* are aliases of + * the generic CRYPT_MODE_* constants, so both could be used + * for each cipher. + * + * Example: + * $aes = new Crypt_AES(CRYPT_AES_MODE_CFB); // $aes will operate in cfb mode + * $aes = new Crypt_AES(CRYPT_MODE_CFB); // identical + * + * @see self::Crypt_Base() + * @var string + * @access private + */ + var $const_namespace; + + /** + * The name of the performance-optimized callback function + * + * Used by encrypt() / decrypt() + * only if $engine == CRYPT_ENGINE_INTERNAL + * + * @see self::encrypt() + * @see self::decrypt() + * @see self::_setupInlineCrypt() + * @see self::$use_inline_crypt + * @var Callback + * @access private + */ + var $inline_crypt; + + /** + * Holds whether performance-optimized $inline_crypt() can/should be used. + * + * @see self::encrypt() + * @see self::decrypt() + * @see self::inline_crypt + * @var mixed + * @access private + */ + var $use_inline_crypt; + + /** + * If OpenSSL can be used in ECB but not in CTR we can emulate CTR + * + * @see self::_openssl_ctr_process() + * @var bool + * @access private + */ + var $openssl_emulate_ctr = false; + + /** + * Determines what options are passed to openssl_encrypt/decrypt + * + * @see self::isValidEngine() + * @var mixed + * @access private + */ + var $openssl_options; + + /** + * Has the key length explicitly been set or should it be derived from the key, itself? + * + * @see self::setKeyLength() + * @var bool + * @access private + */ + var $explicit_key_length = false; + + /** + * Don't truncate / null pad key + * + * @see self::_clearBuffers() + * @var bool + * @access private + */ + var $skip_key_adjustment = false; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * $mode could be: + * + * - CRYPT_MODE_ECB + * + * - CRYPT_MODE_CBC + * + * - CRYPT_MODE_CTR + * + * - CRYPT_MODE_CFB + * + * - CRYPT_MODE_OFB + * + * (or the alias constants of the chosen cipher, for example for AES: CRYPT_AES_MODE_ECB or CRYPT_AES_MODE_CBC ...) + * + * If not explicitly set, CRYPT_MODE_CBC will be used. + * + * @param int $mode + * @access public + */ + function __construct($mode = CRYPT_MODE_CBC) + { + // $mode dependent settings + switch ($mode) { + case CRYPT_MODE_ECB: + $this->paddable = true; + $this->mode = CRYPT_MODE_ECB; + break; + case CRYPT_MODE_CTR: + case CRYPT_MODE_CFB: + case CRYPT_MODE_OFB: + case CRYPT_MODE_STREAM: + $this->mode = $mode; + break; + case CRYPT_MODE_CBC: + default: + $this->paddable = true; + $this->mode = CRYPT_MODE_CBC; + } + + $this->_setEngine(); + + // Determining whether inline crypting can be used by the cipher + if ($this->use_inline_crypt !== false) { + $this->use_inline_crypt = version_compare(PHP_VERSION, '5.3.0') >= 0 || function_exists('create_function'); + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param int $mode + * @access public + */ + function Crypt_Base($mode = CRYPT_MODE_CBC) + { + $this->__construct($mode); + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_MODE_ECB (or ie for AES: CRYPT_AES_MODE_ECB) is being used. If not explicitly set, it'll be assumed + * to be all zero's. + * + * @access public + * @param string $iv + * @internal Can be overwritten by a sub class, but does not have to be + */ + function setIV($iv) + { + if ($this->mode == CRYPT_MODE_ECB) { + return; + } + + $this->iv = $iv; + $this->changed = true; + } + + /** + * Sets the key length. + * + * Keys with explicitly set lengths need to be treated accordingly + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + $this->explicit_key_length = true; + $this->changed = true; + $this->_setEngine(); + } + + /** + * Returns the current key length in bits + * + * @access public + * @return int + */ + function getKeyLength() + { + return $this->key_length << 3; + } + + /** + * Returns the current block length in bits + * + * @access public + * @return int + */ + function getBlockLength() + { + return $this->block_size << 3; + } + + /** + * Sets the key. + * + * The min/max length(s) of the key depends on the cipher which is used. + * If the key not fits the length(s) of the cipher it will paded with null bytes + * up to the closest valid key length. If the key is more than max length, + * we trim the excess bits. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * @access public + * @param string $key + * @internal Could, but not must, extend by the child Crypt_* class + */ + function setKey($key) + { + if (!$this->explicit_key_length) { + $this->setKeyLength(strlen($key) << 3); + $this->explicit_key_length = false; + } + + $this->key = $key; + $this->changed = true; + $this->_setEngine(); + } + + /** + * Sets the password. + * + * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: + * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2} or pbkdf1: + * $hash, $salt, $count, $dkLen + * + * Where $hash (default = sha1) currently supports the following hashes: see: Crypt/Hash.php + * + * @see Crypt/Hash.php + * @param string $password + * @param string $method + * @return bool + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function setPassword($password, $method = 'pbkdf2') + { + $key = ''; + + switch ($method) { + default: // 'pbkdf2' or 'pbkdf1' + $func_args = func_get_args(); + + // Hash function + $hash = isset($func_args[2]) ? $func_args[2] : 'sha1'; + + // WPA and WPA2 use the SSID as the salt + $salt = isset($func_args[3]) ? $func_args[3] : $this->password_default_salt; + + // RFC2898#section-4.2 uses 1,000 iterations by default + // WPA and WPA2 use 4,096. + $count = isset($func_args[4]) ? $func_args[4] : 1000; + + // Keylength + if (isset($func_args[5]) && $func_args[5] > 0) { + $dkLen = $func_args[5]; + } else { + $dkLen = $method == 'pbkdf1' ? 2 * $this->key_length : $this->key_length; + } + + switch (true) { + case $method == 'pbkdf1': + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $hashObj = new Crypt_Hash(); + $hashObj->setHash($hash); + if ($dkLen > $hashObj->getLength()) { + user_error('Derived key too long'); + return false; + } + $t = $password . $salt; + for ($i = 0; $i < $count; ++$i) { + $t = $hashObj->hash($t); + } + $key = substr($t, 0, $dkLen); + + $this->setKey(substr($key, 0, $dkLen >> 1)); + $this->setIV(substr($key, $dkLen >> 1)); + + return true; + // Determining if php[>=5.5.0]'s hash_pbkdf2() function avail- and useable + case !function_exists('hash_pbkdf2'): + case !function_exists('hash_algos'): + case !in_array($hash, hash_algos()): + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $i = 1; + $hmac = new Crypt_Hash(); + $hmac->setHash($hash); + $hmac->setKey($password); + while (strlen($key) < $dkLen) { + $f = $u = $hmac->hash($salt . pack('N', $i++)); + for ($j = 2; $j <= $count; ++$j) { + $u = $hmac->hash($u); + $f^= $u; + } + $key.= $f; + } + $key = substr($key, 0, $dkLen); + break; + default: + $key = hash_pbkdf2($hash, $password, $salt, $count, $dkLen, true); + } + } + + $this->setKey($key); + + return true; + } + + /** + * Encrypts a message. + * + * $plaintext will be padded with additional bytes such that it's length is a multiple of the block size. Other cipher + * implementations may or may not pad in the same manner. Other common approaches to padding and the reasons why it's + * necessary are discussed in the following + * URL: + * + * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html} + * + * An alternative to padding is to, separately, send the length of the file. This is what SSH, in fact, does. + * strlen($plaintext) will still need to be a multiple of the block size, however, arbitrary values can be added to make it that + * length. + * + * @see self::decrypt() + * @access public + * @param string $plaintext + * @return string $ciphertext + * @internal Could, but not must, extend by the child Crypt_* class + */ + function encrypt($plaintext) + { + if ($this->paddable) { + $plaintext = $this->_pad($plaintext); + } + + if ($this->engine === CRYPT_ENGINE_OPENSSL) { + if ($this->changed) { + $this->_clearBuffers(); + $this->changed = false; + } + switch ($this->mode) { + case CRYPT_MODE_STREAM: + return openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + case CRYPT_MODE_ECB: + $result = @openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + return !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; + case CRYPT_MODE_CBC: + $result = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->encryptIV); + if (!defined('OPENSSL_RAW_DATA')) { + $result = substr($result, 0, -$this->block_size); + } + if ($this->continuousBuffer) { + $this->encryptIV = substr($result, -$this->block_size); + } + return $result; + case CRYPT_MODE_CTR: + return $this->_openssl_ctr_process($plaintext, $this->encryptIV, $this->enbuffer); + case CRYPT_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} + $ciphertext = ''; + if ($this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + } else { + $iv = $this->encryptIV; + $pos = 0; + } + $len = strlen($plaintext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $this->block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $plaintext = substr($plaintext, $i); + } + + $overflow = $len % $this->block_size; + + if ($overflow) { + $ciphertext.= openssl_encrypt(substr($plaintext, 0, -$overflow) . str_repeat("\0", $this->block_size), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $iv = $this->_string_pop($ciphertext, $this->block_size); + + $size = $len - $overflow; + $block = $iv ^ substr($plaintext, -$overflow); + $iv = substr_replace($iv, $block, 0, $overflow); + $ciphertext.= $block; + $pos = $overflow; + } elseif ($len) { + $ciphertext = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $iv = substr($ciphertext, -$this->block_size); + } + + return $ciphertext; + case CRYPT_MODE_OFB: + return $this->_openssl_ofb_process($plaintext, $this->encryptIV, $this->enbuffer); + } + } + + if ($this->engine === CRYPT_ENGINE_MCRYPT) { + set_error_handler(array($this, 'do_nothing')); + if ($this->changed) { + $this->_setupMcrypt(); + $this->changed = false; + } + if ($this->enchanged) { + mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); + $this->enchanged = false; + } + + // re: {@link http://phpseclib.sourceforge.net/cfb-demo.phps} + // using mcrypt's default handing of CFB the above would output two different things. using phpseclib's + // rewritten CFB implementation the above outputs the same thing twice. + if ($this->mode == CRYPT_MODE_CFB && $this->continuousBuffer) { + $block_size = $this->block_size; + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + $len = strlen($plaintext); + $ciphertext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $this->enbuffer['enmcrypt_init'] = true; + } + if ($len >= $block_size) { + if ($this->enbuffer['enmcrypt_init'] === false || $len > $this->cfb_init_len) { + if ($this->enbuffer['enmcrypt_init'] === true) { + mcrypt_generic_init($this->enmcrypt, $this->key, $iv); + $this->enbuffer['enmcrypt_init'] = false; + } + $ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size)); + $iv = substr($ciphertext, -$block_size); + $len%= $block_size; + } else { + while ($len >= $block_size) { + $iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size); + $ciphertext.= $iv; + $len-= $block_size; + $i+= $block_size; + } + } + } + + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $block = $iv ^ substr($plaintext, -$len); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + + restore_error_handler(); + + return $ciphertext; + } + + $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext); + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); + } + + restore_error_handler(); + + return $ciphertext; + } + + if ($this->changed) { + $this->_setup(); + $this->changed = false; + } + if ($this->use_inline_crypt) { + $inline = $this->inline_crypt; + return $inline('encrypt', $this, $plaintext); + } + + $buffer = &$this->enbuffer; + $block_size = $this->block_size; + $ciphertext = ''; + switch ($this->mode) { + case CRYPT_MODE_ECB: + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $ciphertext.= $this->_encryptBlock(substr($plaintext, $i, $block_size)); + } + break; + case CRYPT_MODE_CBC: + $xor = $this->encryptIV; + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $block = $this->_encryptBlock($block ^ $xor); + $xor = $block; + $ciphertext.= $block; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + } + break; + case CRYPT_MODE_CTR: + $xor = $this->encryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + if (strlen($block) > strlen($buffer['ciphertext'])) { + $buffer['ciphertext'].= $this->_encryptBlock($xor); + } + $this->_increment_str($xor); + $key = $this->_string_shift($buffer['ciphertext'], $block_size); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $key = $this->_encryptBlock($xor); + $this->_increment_str($xor); + $ciphertext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} + if ($this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->encryptIV; + $pos = 0; + } + $len = strlen($plaintext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + } + while ($len >= $block_size) { + $iv = $this->_encryptBlock($iv) ^ substr($plaintext, $i, $block_size); + $ciphertext.= $iv; + $len-= $block_size; + $i+= $block_size; + } + if ($len) { + $iv = $this->_encryptBlock($iv); + $block = $iv ^ substr($plaintext, $i); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + break; + case CRYPT_MODE_OFB: + $xor = $this->encryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + if (strlen($block) > strlen($buffer['xor'])) { + $xor = $this->_encryptBlock($xor); + $buffer['xor'].= $xor; + } + $key = $this->_string_shift($buffer['xor'], $block_size); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $ciphertext.= substr($plaintext, $i, $block_size) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + break; + case CRYPT_MODE_STREAM: + $ciphertext = $this->_encryptBlock($plaintext); + break; + } + + return $ciphertext; + } + + /** + * Decrypts a message. + * + * If strlen($ciphertext) is not a multiple of the block size, null bytes will be added to the end of the string until + * it is. + * + * @see self::encrypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + * @internal Could, but not must, extend by the child Crypt_* class + */ + function decrypt($ciphertext) + { + if ($this->paddable) { + // we pad with chr(0) since that's what mcrypt_generic does. to quote from {@link http://www.php.net/function.mcrypt-generic}: + // "The data is padded with "\0" to make sure the length of the data is n * blocksize." + $ciphertext = str_pad($ciphertext, strlen($ciphertext) + ($this->block_size - strlen($ciphertext) % $this->block_size) % $this->block_size, chr(0)); + } + + if ($this->engine === CRYPT_ENGINE_OPENSSL) { + if ($this->changed) { + $this->_clearBuffers(); + $this->changed = false; + } + switch ($this->mode) { + case CRYPT_MODE_STREAM: + $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + break; + case CRYPT_MODE_ECB: + if (!defined('OPENSSL_RAW_DATA')) { + $ciphertext.= @openssl_encrypt('', $this->cipher_name_openssl_ecb, $this->key, true); + } + $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + break; + case CRYPT_MODE_CBC: + if (!defined('OPENSSL_RAW_DATA')) { + $padding = str_repeat(chr($this->block_size), $this->block_size) ^ substr($ciphertext, -$this->block_size); + $ciphertext.= substr(@openssl_encrypt($padding, $this->cipher_name_openssl_ecb, $this->key, true), 0, $this->block_size); + $offset = 2 * $this->block_size; + } else { + $offset = $this->block_size; + } + $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->decryptIV); + if ($this->continuousBuffer) { + $this->decryptIV = substr($ciphertext, -$offset, $this->block_size); + } + break; + case CRYPT_MODE_CTR: + $plaintext = $this->_openssl_ctr_process($ciphertext, $this->decryptIV, $this->debuffer); + break; + case CRYPT_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} + $plaintext = ''; + if ($this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$this->buffer['pos']; + } else { + $iv = $this->decryptIV; + $pos = 0; + } + $len = strlen($ciphertext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $this->block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $this->blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + $ciphertext = substr($ciphertext, $i); + } + $overflow = $len % $this->block_size; + if ($overflow) { + $plaintext.= openssl_decrypt(substr($ciphertext, 0, -$overflow), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + if ($len - $overflow) { + $iv = substr($ciphertext, -$overflow - $this->block_size, -$overflow); + } + $iv = openssl_encrypt(str_repeat("\0", $this->block_size), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $plaintext.= $iv ^ substr($ciphertext, -$overflow); + $iv = substr_replace($iv, substr($ciphertext, -$overflow), 0, $overflow); + $pos = $overflow; + } elseif ($len) { + $plaintext.= openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $iv = substr($ciphertext, -$this->block_size); + } + break; + case CRYPT_MODE_OFB: + $plaintext = $this->_openssl_ofb_process($ciphertext, $this->decryptIV, $this->debuffer); + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + if ($this->engine === CRYPT_ENGINE_MCRYPT) { + set_error_handler(array($this, 'do_nothing')); + $block_size = $this->block_size; + if ($this->changed) { + $this->_setupMcrypt(); + $this->changed = false; + } + if ($this->dechanged) { + mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); + $this->dechanged = false; + } + + if ($this->mode == CRYPT_MODE_CFB && $this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$this->debuffer['pos']; + $len = strlen($ciphertext); + $plaintext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + if ($len >= $block_size) { + $cb = substr($ciphertext, $i, $len - $len % $block_size); + $plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb; + $iv = substr($cb, -$block_size); + $len%= $block_size; + } + if ($len) { + $iv = mcrypt_generic($this->ecb, $iv); + $plaintext.= $iv ^ substr($ciphertext, -$len); + $iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len); + $pos = $len; + } + + restore_error_handler(); + + return $plaintext; + } + + $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext); + + if (!$this->continuousBuffer) { + mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); + } + + restore_error_handler(); + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + if ($this->changed) { + $this->_setup(); + $this->changed = false; + } + if ($this->use_inline_crypt) { + $inline = $this->inline_crypt; + return $inline('decrypt', $this, $ciphertext); + } + + $block_size = $this->block_size; + + $buffer = &$this->debuffer; + $plaintext = ''; + switch ($this->mode) { + case CRYPT_MODE_ECB: + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $plaintext.= $this->_decryptBlock(substr($ciphertext, $i, $block_size)); + } + break; + case CRYPT_MODE_CBC: + $xor = $this->decryptIV; + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $plaintext.= $this->_decryptBlock($block) ^ $xor; + $xor = $block; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + } + break; + case CRYPT_MODE_CTR: + $xor = $this->decryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + if (strlen($block) > strlen($buffer['ciphertext'])) { + $buffer['ciphertext'].= $this->_encryptBlock($xor); + $this->_increment_str($xor); + } + $key = $this->_string_shift($buffer['ciphertext'], $block_size); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $key = $this->_encryptBlock($xor); + $this->_increment_str($xor); + $plaintext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_MODE_CFB: + if ($this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->decryptIV; + $pos = 0; + } + $len = strlen($ciphertext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + while ($len >= $block_size) { + $iv = $this->_encryptBlock($iv); + $cb = substr($ciphertext, $i, $block_size); + $plaintext.= $iv ^ $cb; + $iv = $cb; + $len-= $block_size; + $i+= $block_size; + } + if ($len) { + $iv = $this->_encryptBlock($iv); + $plaintext.= $iv ^ substr($ciphertext, $i); + $iv = substr_replace($iv, substr($ciphertext, $i), 0, $len); + $pos = $len; + } + break; + case CRYPT_MODE_OFB: + $xor = $this->decryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + if (strlen($block) > strlen($buffer['xor'])) { + $xor = $this->_encryptBlock($xor); + $buffer['xor'].= $xor; + } + $key = $this->_string_shift($buffer['xor'], $block_size); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $plaintext.= substr($ciphertext, $i, $block_size) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % $block_size) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + break; + case CRYPT_MODE_STREAM: + $plaintext = $this->_decryptBlock($ciphertext); + break; + } + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + /** + * OpenSSL CTR Processor + * + * PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream + * for CTR is the same for both encrypting and decrypting this function is re-used by both Crypt_Base::encrypt() + * and Crypt_Base::decrypt(). Also, OpenSSL doesn't implement CTR for all of it's symmetric ciphers so this + * function will emulate CTR with ECB when necessary. + * + * @see self::encrypt() + * @see self::decrypt() + * @param string $plaintext + * @param string $encryptIV + * @param array $buffer + * @return string + * @access private + */ + function _openssl_ctr_process($plaintext, &$encryptIV, &$buffer) + { + $ciphertext = ''; + + $block_size = $this->block_size; + $key = $this->key; + + if ($this->openssl_emulate_ctr) { + $xor = $encryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + if (strlen($block) > strlen($buffer['ciphertext'])) { + $result = @openssl_encrypt($xor, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + $result = !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; + $buffer['ciphertext'].= $result; + } + $this->_increment_str($xor); + $otp = $this->_string_shift($buffer['ciphertext'], $block_size); + $ciphertext.= $block ^ $otp; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $otp = @openssl_encrypt($xor, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + $otp = !defined('OPENSSL_RAW_DATA') ? substr($otp, 0, -$this->block_size) : $otp; + $this->_increment_str($xor); + $ciphertext.= $block ^ $otp; + } + } + if ($this->continuousBuffer) { + $encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + + return $ciphertext; + } + + if (strlen($buffer['ciphertext'])) { + $ciphertext = $plaintext ^ $this->_string_shift($buffer['ciphertext'], strlen($plaintext)); + $plaintext = substr($plaintext, strlen($ciphertext)); + + if (!strlen($plaintext)) { + return $ciphertext; + } + } + + $overflow = strlen($plaintext) % $block_size; + if ($overflow) { + $plaintext2 = $this->_string_pop($plaintext, $overflow); // ie. trim $plaintext to a multiple of $block_size and put rest of $plaintext in $plaintext2 + $encrypted = openssl_encrypt($plaintext . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + $temp = $this->_string_pop($encrypted, $block_size); + $ciphertext.= $encrypted . ($plaintext2 ^ $temp); + if ($this->continuousBuffer) { + $buffer['ciphertext'] = substr($temp, $overflow); + $encryptIV = $temp; + } + } elseif (!strlen($buffer['ciphertext'])) { + $ciphertext.= openssl_encrypt($plaintext . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + $temp = $this->_string_pop($ciphertext, $block_size); + if ($this->continuousBuffer) { + $encryptIV = $temp; + } + } + if ($this->continuousBuffer) { + if (!defined('OPENSSL_RAW_DATA')) { + $encryptIV.= @openssl_encrypt('', $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + } + $encryptIV = openssl_decrypt($encryptIV, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + if ($overflow) { + $this->_increment_str($encryptIV); + } + } + + return $ciphertext; + } + + /** + * OpenSSL OFB Processor + * + * PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream + * for OFB is the same for both encrypting and decrypting this function is re-used by both Crypt_Base::encrypt() + * and Crypt_Base::decrypt(). + * + * @see self::encrypt() + * @see self::decrypt() + * @param string $plaintext + * @param string $encryptIV + * @param array $buffer + * @return string + * @access private + */ + function _openssl_ofb_process($plaintext, &$encryptIV, &$buffer) + { + if (strlen($buffer['xor'])) { + $ciphertext = $plaintext ^ $buffer['xor']; + $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext)); + $plaintext = substr($plaintext, strlen($ciphertext)); + } else { + $ciphertext = ''; + } + + $block_size = $this->block_size; + + $len = strlen($plaintext); + $key = $this->key; + $overflow = $len % $block_size; + + if (strlen($plaintext)) { + if ($overflow) { + $ciphertext.= openssl_encrypt(substr($plaintext, 0, -$overflow) . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + $xor = $this->_string_pop($ciphertext, $block_size); + if ($this->continuousBuffer) { + $encryptIV = $xor; + } + $ciphertext.= $this->_string_shift($xor, $overflow) ^ substr($plaintext, -$overflow); + if ($this->continuousBuffer) { + $buffer['xor'] = $xor; + } + } else { + $ciphertext = openssl_encrypt($plaintext, $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + if ($this->continuousBuffer) { + $encryptIV = substr($ciphertext, -$block_size) ^ substr($plaintext, -$block_size); + } + } + } + + return $ciphertext; + } + + /** + * phpseclib <-> OpenSSL Mode Mapper + * + * May need to be overwritten by classes extending this one in some cases + * + * @return int + * @access private + */ + function _openssl_translate_mode() + { + switch ($this->mode) { + case CRYPT_MODE_ECB: + return 'ecb'; + case CRYPT_MODE_CBC: + return 'cbc'; + case CRYPT_MODE_CTR: + return 'ctr'; + case CRYPT_MODE_CFB: + return 'cfb'; + case CRYPT_MODE_OFB: + return 'ofb'; + } + } + + /** + * Pad "packets". + * + * Block ciphers working by encrypting between their specified [$this->]block_size at a time + * If you ever need to encrypt or decrypt something that isn't of the proper length, it becomes necessary to + * pad the input so that it is of the proper length. + * + * Padding is enabled by default. Sometimes, however, it is undesirable to pad strings. Such is the case in SSH, + * where "packets" are padded with random bytes before being encrypted. Unpad these packets and you risk stripping + * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is + * transmitted separately) + * + * @see self::disablePadding() + * @access public + */ + function enablePadding() + { + $this->padding = true; + } + + /** + * Do not pad packets. + * + * @see self::enablePadding() + * @access public + */ + function disablePadding() + { + $this->padding = false; + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 32-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $rijndael->encrypt(substr($plaintext, 0, 16)); + * echo $rijndael->encrypt(substr($plaintext, 16, 16)); + * + * + * echo $rijndael->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $rijndael->encrypt(substr($plaintext, 0, 16)); + * echo $rijndael->decrypt($rijndael->encrypt(substr($plaintext, 16, 16))); + * + * + * echo $rijndael->decrypt($rijndael->encrypt(substr($plaintext, 16, 16))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_*() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see self::disableContinuousBuffer() + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function enableContinuousBuffer() + { + if ($this->mode == CRYPT_MODE_ECB) { + return; + } + + $this->continuousBuffer = true; + + $this->_setEngine(); + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see self::enableContinuousBuffer() + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function disableContinuousBuffer() + { + if ($this->mode == CRYPT_MODE_ECB) { + return; + } + if (!$this->continuousBuffer) { + return; + } + + $this->continuousBuffer = false; + $this->changed = true; + + $this->_setEngine(); + } + + /** + * Test for engine validity + * + * @see self::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + if ($this->mode == CRYPT_MODE_STREAM && $this->continuousBuffer) { + return false; + } + $this->openssl_emulate_ctr = false; + $result = $this->cipher_name_openssl && + extension_loaded('openssl') && + // PHP 5.3.0 - 5.3.2 did not let you set IV's + version_compare(PHP_VERSION, '5.3.3', '>='); + if (!$result) { + return false; + } + + // prior to PHP 5.4.0 OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING were not defined. instead of expecting an integer + // $options openssl_encrypt expected a boolean $raw_data. + if (!defined('OPENSSL_RAW_DATA')) { + $this->openssl_options = true; + } else { + $this->openssl_options = OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING; + } + + $methods = openssl_get_cipher_methods(); + if (in_array($this->cipher_name_openssl, $methods)) { + return true; + } + // not all of openssl's symmetric cipher's support ctr. for those + // that don't we'll emulate it + switch ($this->mode) { + case CRYPT_MODE_CTR: + if (in_array($this->cipher_name_openssl_ecb, $methods)) { + $this->openssl_emulate_ctr = true; + return true; + } + } + return false; + case CRYPT_ENGINE_MCRYPT: + set_error_handler(array($this, 'do_nothing')); + $result = $this->cipher_name_mcrypt && + extension_loaded('mcrypt') && + in_array($this->cipher_name_mcrypt, mcrypt_list_algorithms()); + restore_error_handler(); + return $result; + case CRYPT_ENGINE_INTERNAL: + return true; + } + + return false; + } + + /** + * Sets the preferred crypt engine + * + * Currently, $engine could be: + * + * - CRYPT_ENGINE_OPENSSL [very fast] + * + * - CRYPT_ENGINE_MCRYPT [fast] + * + * - CRYPT_ENGINE_INTERNAL [slow] + * + * If the preferred crypt engine is not available the fastest available one will be used + * + * @see self::Crypt_Base() + * @param int $engine + * @access public + */ + function setPreferredEngine($engine) + { + switch ($engine) { + //case CRYPT_ENGINE_OPENSSL: + case CRYPT_ENGINE_MCRYPT: + case CRYPT_ENGINE_INTERNAL: + $this->preferredEngine = $engine; + break; + default: + $this->preferredEngine = CRYPT_ENGINE_OPENSSL; + } + + $this->_setEngine(); + } + + /** + * Returns the engine currently being utilized + * + * @see self::_setEngine() + * @access public + */ + function getEngine() + { + return $this->engine; + } + + /** + * Sets the engine as appropriate + * + * @see self::Crypt_Base() + * @access private + */ + function _setEngine() + { + $this->engine = null; + + $candidateEngines = array( + $this->preferredEngine, + CRYPT_ENGINE_OPENSSL, + CRYPT_ENGINE_MCRYPT + ); + foreach ($candidateEngines as $engine) { + if ($this->isValidEngine($engine)) { + $this->engine = $engine; + break; + } + } + if (!$this->engine) { + $this->engine = CRYPT_ENGINE_INTERNAL; + } + + if ($this->engine != CRYPT_ENGINE_MCRYPT && $this->enmcrypt) { + set_error_handler(array($this, 'do_nothing')); + // Closing the current mcrypt resource(s). _mcryptSetup() will, if needed, + // (re)open them with the module named in $this->cipher_name_mcrypt + mcrypt_module_close($this->enmcrypt); + mcrypt_module_close($this->demcrypt); + $this->enmcrypt = null; + $this->demcrypt = null; + + if ($this->ecb) { + mcrypt_module_close($this->ecb); + $this->ecb = null; + } + restore_error_handler(); + } + + $this->changed = true; + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + * @internal Must be extended by the child Crypt_* class + */ + function _encryptBlock($in) + { + user_error((version_compare(PHP_VERSION, '5.0.0', '>=') ? __METHOD__ : __FUNCTION__) . '() must extend by class ' . get_class($this), E_USER_ERROR); + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + * @internal Must be extended by the child Crypt_* class + */ + function _decryptBlock($in) + { + user_error((version_compare(PHP_VERSION, '5.0.0', '>=') ? __METHOD__ : __FUNCTION__) . '() must extend by class ' . get_class($this), E_USER_ERROR); + } + + /** + * Setup the key (expansion) + * + * Only used if $engine == CRYPT_ENGINE_INTERNAL + * + * @see self::_setup() + * @access private + * @internal Must be extended by the child Crypt_* class + */ + function _setupKey() + { + user_error((version_compare(PHP_VERSION, '5.0.0', '>=') ? __METHOD__ : __FUNCTION__) . '() must extend by class ' . get_class($this), E_USER_ERROR); + } + + /** + * Setup the CRYPT_ENGINE_INTERNAL $engine + * + * (re)init, if necessary, the internal cipher $engine and flush all $buffers + * Used (only) if $engine == CRYPT_ENGINE_INTERNAL + * + * _setup() will be called each time if $changed === true + * typically this happens when using one or more of following public methods: + * + * - setKey() + * + * - setIV() + * + * - disableContinuousBuffer() + * + * - First run of encrypt() / decrypt() with no init-settings + * + * @see self::setKey() + * @see self::setIV() + * @see self::disableContinuousBuffer() + * @access private + * @internal _setup() is always called before en/decryption. + * @internal Could, but not must, extend by the child Crypt_* class + */ + function _setup() + { + $this->_clearBuffers(); + $this->_setupKey(); + + if ($this->use_inline_crypt) { + $this->_setupInlineCrypt(); + } + } + + /** + * Setup the CRYPT_ENGINE_MCRYPT $engine + * + * (re)init, if necessary, the (ext)mcrypt resources and flush all $buffers + * Used (only) if $engine = CRYPT_ENGINE_MCRYPT + * + * _setupMcrypt() will be called each time if $changed === true + * typically this happens when using one or more of following public methods: + * + * - setKey() + * + * - setIV() + * + * - disableContinuousBuffer() + * + * - First run of encrypt() / decrypt() + * + * @see self::setKey() + * @see self::setIV() + * @see self::disableContinuousBuffer() + * @access private + * @internal Could, but not must, extend by the child Crypt_* class + */ + function _setupMcrypt() + { + $this->_clearBuffers(); + $this->enchanged = $this->dechanged = true; + + if (!isset($this->enmcrypt)) { + static $mcrypt_modes = array( + CRYPT_MODE_CTR => 'ctr', + CRYPT_MODE_ECB => MCRYPT_MODE_ECB, + CRYPT_MODE_CBC => MCRYPT_MODE_CBC, + CRYPT_MODE_CFB => 'ncfb', + CRYPT_MODE_OFB => MCRYPT_MODE_NOFB, + CRYPT_MODE_STREAM => MCRYPT_MODE_STREAM, + ); + + $this->demcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], ''); + $this->enmcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], ''); + + // we need the $ecb mcrypt resource (only) in MODE_CFB with enableContinuousBuffer() + // to workaround mcrypt's broken ncfb implementation in buffered mode + // see: {@link http://phpseclib.sourceforge.net/cfb-demo.phps} + if ($this->mode == CRYPT_MODE_CFB) { + $this->ecb = mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, ''); + } + } // else should mcrypt_generic_deinit be called? + + if ($this->mode == CRYPT_MODE_CFB) { + mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size)); + } + } + + /** + * Pads a string + * + * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize. + * $this->block_size - (strlen($text) % $this->block_size) bytes are added, each of which is equal to + * chr($this->block_size - (strlen($text) % $this->block_size) + * + * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless + * and padding will, hence forth, be enabled. + * + * @see self::_unpad() + * @param string $text + * @access private + * @return string + */ + function _pad($text) + { + $length = strlen($text); + + if (!$this->padding) { + if ($length % $this->block_size == 0) { + return $text; + } else { + user_error("The plaintext's length ($length) is not a multiple of the block size ({$this->block_size})"); + $this->padding = true; + } + } + + $pad = $this->block_size - ($length % $this->block_size); + + return str_pad($text, $length + $pad, chr($pad)); + } + + /** + * Unpads a string. + * + * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong + * and false will be returned. + * + * @see self::_pad() + * @param string $text + * @access private + * @return string + */ + function _unpad($text) + { + if (!$this->padding) { + return $text; + } + + $length = ord($text[strlen($text) - 1]); + + if (!$length || $length > $this->block_size) { + return false; + } + + return substr($text, 0, -$length); + } + + /** + * Clears internal buffers + * + * Clearing/resetting the internal buffers is done everytime + * after disableContinuousBuffer() or on cipher $engine (re)init + * ie after setKey() or setIV() + * + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function _clearBuffers() + { + $this->enbuffer = $this->debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); + + // mcrypt's handling of invalid's $iv: + // $this->encryptIV = $this->decryptIV = strlen($this->iv) == $this->block_size ? $this->iv : str_repeat("\0", $this->block_size); + $this->encryptIV = $this->decryptIV = str_pad(substr($this->iv, 0, $this->block_size), $this->block_size, "\0"); + + if (!$this->skip_key_adjustment) { + $this->key = str_pad(substr($this->key, 0, $this->key_length), $this->key_length, "\0"); + } + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @access private + * @return string + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * String Pop + * + * Inspired by array_pop + * + * @param string $string + * @param int $index + * @access private + * @return string + */ + function _string_pop(&$string, $index = 1) + { + $substr = substr($string, -$index); + $string = substr($string, 0, -$index); + return $substr; + } + + /** + * Increment the current string + * + * @see self::decrypt() + * @see self::encrypt() + * @param string $var + * @access private + */ + function _increment_str(&$var) + { + for ($i = 4; $i <= strlen($var); $i+= 4) { + $temp = substr($var, -$i, 4); + switch ($temp) { + case "\xFF\xFF\xFF\xFF": + $var = substr_replace($var, "\x00\x00\x00\x00", -$i, 4); + break; + case "\x7F\xFF\xFF\xFF": + $var = substr_replace($var, "\x80\x00\x00\x00", -$i, 4); + return; + default: + $temp = unpack('Nnum', $temp); + $var = substr_replace($var, pack('N', $temp['num'] + 1), -$i, 4); + return; + } + } + + $remainder = strlen($var) % 4; + + if ($remainder == 0) { + return; + } + + $temp = unpack('Nnum', str_pad(substr($var, 0, $remainder), 4, "\0", STR_PAD_LEFT)); + $temp = substr(pack('N', $temp['num'] + 1), -$remainder); + $var = substr_replace($var, $temp, 0, $remainder); + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * Stores the created (or existing) callback function-name + * in $this->inline_crypt + * + * Internally for phpseclib developers: + * + * _setupInlineCrypt() would be called only if: + * + * - $engine == CRYPT_ENGINE_INTERNAL and + * + * - $use_inline_crypt === true + * + * - each time on _setup(), after(!) _setupKey() + * + * + * This ensures that _setupInlineCrypt() has always a + * full ready2go initializated internal cipher $engine state + * where, for example, the keys allready expanded, + * keys/block_size calculated and such. + * + * It is, each time if called, the responsibility of _setupInlineCrypt(): + * + * - to set $this->inline_crypt to a valid and fully working callback function + * as a (faster) replacement for encrypt() / decrypt() + * + * - NOT to create unlimited callback functions (for memory reasons!) + * no matter how often _setupInlineCrypt() would be called. At some + * point of amount they must be generic re-useable. + * + * - the code of _setupInlineCrypt() it self, + * and the generated callback code, + * must be, in following order: + * - 100% safe + * - 100% compatible to encrypt()/decrypt() + * - using only php5+ features/lang-constructs/php-extensions if + * compatibility (down to php4) or fallback is provided + * - readable/maintainable/understandable/commented and... not-cryptic-styled-code :-) + * - >= 10% faster than encrypt()/decrypt() [which is, by the way, + * the reason for the existence of _setupInlineCrypt() :-)] + * - memory-nice + * - short (as good as possible) + * + * Note: - _setupInlineCrypt() is using _createInlineCryptFunction() to create the full callback function code. + * - In case of using inline crypting, _setupInlineCrypt() must extend by the child Crypt_* class. + * - The following variable names are reserved: + * - $_* (all variable names prefixed with an underscore) + * - $self (object reference to it self. Do not use $this, but $self instead) + * - $in (the content of $in has to en/decrypt by the generated code) + * - The callback function should not use the 'return' statement, but en/decrypt'ing the content of $in only + * + * + * @see self::_setup() + * @see self::_createInlineCryptFunction() + * @see self::encrypt() + * @see self::decrypt() + * @access private + * @internal If a Crypt_* class providing inline crypting it must extend _setupInlineCrypt() + */ + function _setupInlineCrypt() + { + // If, for any reason, an extending Crypt_Base() Crypt_* class + // not using inline crypting then it must be ensured that: $this->use_inline_crypt = false + // ie in the class var declaration of $use_inline_crypt in general for the Crypt_* class, + // in the constructor at object instance-time + // or, if it's runtime-specific, at runtime + + $this->use_inline_crypt = false; + } + + /** + * Creates the performance-optimized function for en/decrypt() + * + * Internally for phpseclib developers: + * + * _createInlineCryptFunction(): + * + * - merge the $cipher_code [setup'ed by _setupInlineCrypt()] + * with the current [$this->]mode of operation code + * + * - create the $inline function, which called by encrypt() / decrypt() + * as its replacement to speed up the en/decryption operations. + * + * - return the name of the created $inline callback function + * + * - used to speed up en/decryption + * + * + * + * The main reason why can speed up things [up to 50%] this way are: + * + * - using variables more effective then regular. + * (ie no use of expensive arrays but integers $k_0, $k_1 ... + * or even, for example, the pure $key[] values hardcoded) + * + * - avoiding 1000's of function calls of ie _encryptBlock() + * but inlining the crypt operations. + * in the mode of operation for() loop. + * + * - full loop unroll the (sometimes key-dependent) rounds + * avoiding this way ++$i counters and runtime-if's etc... + * + * The basic code architectur of the generated $inline en/decrypt() + * lambda function, in pseudo php, is: + * + * + * +----------------------------------------------------------------------------------------------+ + * | callback $inline = create_function: | + * | lambda_function_0001_crypt_ECB($action, $text) | + * | { | + * | INSERT PHP CODE OF: | + * | $cipher_code['init_crypt']; // general init code. | + * | // ie: $sbox'es declarations used for | + * | // encrypt and decrypt'ing. | + * | | + * | switch ($action) { | + * | case 'encrypt': | + * | INSERT PHP CODE OF: | + * | $cipher_code['init_encrypt']; // encrypt sepcific init code. | + * | ie: specified $key or $box | + * | declarations for encrypt'ing. | + * | | + * | foreach ($ciphertext) { | + * | $in = $block_size of $ciphertext; | + * | | + * | INSERT PHP CODE OF: | + * | $cipher_code['encrypt_block']; // encrypt's (string) $in, which is always: | + * | // strlen($in) == $this->block_size | + * | // here comes the cipher algorithm in action | + * | // for encryption. | + * | // $cipher_code['encrypt_block'] has to | + * | // encrypt the content of the $in variable | + * | | + * | $plaintext .= $in; | + * | } | + * | return $plaintext; | + * | | + * | case 'decrypt': | + * | INSERT PHP CODE OF: | + * | $cipher_code['init_decrypt']; // decrypt sepcific init code | + * | ie: specified $key or $box | + * | declarations for decrypt'ing. | + * | foreach ($plaintext) { | + * | $in = $block_size of $plaintext; | + * | | + * | INSERT PHP CODE OF: | + * | $cipher_code['decrypt_block']; // decrypt's (string) $in, which is always | + * | // strlen($in) == $this->block_size | + * | // here comes the cipher algorithm in action | + * | // for decryption. | + * | // $cipher_code['decrypt_block'] has to | + * | // decrypt the content of the $in variable | + * | $ciphertext .= $in; | + * | } | + * | return $ciphertext; | + * | } | + * | } | + * +----------------------------------------------------------------------------------------------+ + * + * + * See also the Crypt_*::_setupInlineCrypt()'s for + * productive inline $cipher_code's how they works. + * + * Structure of: + * + * $cipher_code = array( + * 'init_crypt' => (string) '', // optional + * 'init_encrypt' => (string) '', // optional + * 'init_decrypt' => (string) '', // optional + * 'encrypt_block' => (string) '', // required + * 'decrypt_block' => (string) '' // required + * ); + * + * + * @see self::_setupInlineCrypt() + * @see self::encrypt() + * @see self::decrypt() + * @param array $cipher_code + * @access private + * @return string (the name of the created callback function) + */ + function _createInlineCryptFunction($cipher_code) + { + $block_size = $this->block_size; + + // optional + $init_crypt = isset($cipher_code['init_crypt']) ? $cipher_code['init_crypt'] : ''; + $init_encrypt = isset($cipher_code['init_encrypt']) ? $cipher_code['init_encrypt'] : ''; + $init_decrypt = isset($cipher_code['init_decrypt']) ? $cipher_code['init_decrypt'] : ''; + // required + $encrypt_block = $cipher_code['encrypt_block']; + $decrypt_block = $cipher_code['decrypt_block']; + + // Generating mode of operation inline code, + // merged with the $cipher_code algorithm + // for encrypt- and decryption. + switch ($this->mode) { + case CRYPT_MODE_ECB: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $in = substr($_text, $_i, '.$block_size.'); + '.$encrypt_block.' + $_ciphertext.= $in; + } + + return $_ciphertext; + '; + + $decrypt = $init_decrypt . ' + $_plaintext = ""; + $_text = str_pad($_text, strlen($_text) + ('.$block_size.' - strlen($_text) % '.$block_size.') % '.$block_size.', chr(0)); + $_ciphertext_len = strlen($_text); + + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $in = substr($_text, $_i, '.$block_size.'); + '.$decrypt_block.' + $_plaintext.= $in; + } + + return $self->_unpad($_plaintext); + '; + break; + case CRYPT_MODE_CTR: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + $_xor = $self->encryptIV; + $_buffer = &$self->enbuffer; + if (strlen($_buffer["ciphertext"])) { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["ciphertext"])) { + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_buffer["ciphertext"].= $in; + } + $_key = $self->_string_shift($_buffer["ciphertext"], '.$block_size.'); + $_ciphertext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_key = $in; + $_ciphertext.= $_block ^ $_key; + } + } + if ($self->continuousBuffer) { + $self->encryptIV = $_xor; + if ($_start = $_plaintext_len % '.$block_size.') { + $_buffer["ciphertext"] = substr($_key, $_start) . $_buffer["ciphertext"]; + } + } + + return $_ciphertext; + '; + + $decrypt = $init_encrypt . ' + $_plaintext = ""; + $_ciphertext_len = strlen($_text); + $_xor = $self->decryptIV; + $_buffer = &$self->debuffer; + + if (strlen($_buffer["ciphertext"])) { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["ciphertext"])) { + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_buffer["ciphertext"].= $in; + } + $_key = $self->_string_shift($_buffer["ciphertext"], '.$block_size.'); + $_plaintext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_key = $in; + $_plaintext.= $_block ^ $_key; + } + } + if ($self->continuousBuffer) { + $self->decryptIV = $_xor; + if ($_start = $_ciphertext_len % '.$block_size.') { + $_buffer["ciphertext"] = substr($_key, $_start) . $_buffer["ciphertext"]; + } + } + + return $_plaintext; + '; + break; + case CRYPT_MODE_CFB: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_buffer = &$self->enbuffer; + + if ($self->continuousBuffer) { + $_iv = &$self->encryptIV; + $_pos = &$_buffer["pos"]; + } else { + $_iv = $self->encryptIV; + $_pos = 0; + } + $_len = strlen($_text); + $_i = 0; + if ($_pos) { + $_orig_pos = $_pos; + $_max = '.$block_size.' - $_pos; + if ($_len >= $_max) { + $_i = $_max; + $_len-= $_max; + $_pos = 0; + } else { + $_i = $_len; + $_pos+= $_len; + $_len = 0; + } + $_ciphertext = substr($_iv, $_orig_pos) ^ $_text; + $_iv = substr_replace($_iv, $_ciphertext, $_orig_pos, $_i); + } + while ($_len >= '.$block_size.') { + $in = $_iv; + '.$encrypt_block.'; + $_iv = $in ^ substr($_text, $_i, '.$block_size.'); + $_ciphertext.= $_iv; + $_len-= '.$block_size.'; + $_i+= '.$block_size.'; + } + if ($_len) { + $in = $_iv; + '.$encrypt_block.' + $_iv = $in; + $_block = $_iv ^ substr($_text, $_i); + $_iv = substr_replace($_iv, $_block, 0, $_len); + $_ciphertext.= $_block; + $_pos = $_len; + } + return $_ciphertext; + '; + + $decrypt = $init_encrypt . ' + $_plaintext = ""; + $_buffer = &$self->debuffer; + + if ($self->continuousBuffer) { + $_iv = &$self->decryptIV; + $_pos = &$_buffer["pos"]; + } else { + $_iv = $self->decryptIV; + $_pos = 0; + } + $_len = strlen($_text); + $_i = 0; + if ($_pos) { + $_orig_pos = $_pos; + $_max = '.$block_size.' - $_pos; + if ($_len >= $_max) { + $_i = $_max; + $_len-= $_max; + $_pos = 0; + } else { + $_i = $_len; + $_pos+= $_len; + $_len = 0; + } + $_plaintext = substr($_iv, $_orig_pos) ^ $_text; + $_iv = substr_replace($_iv, substr($_text, 0, $_i), $_orig_pos, $_i); + } + while ($_len >= '.$block_size.') { + $in = $_iv; + '.$encrypt_block.' + $_iv = $in; + $cb = substr($_text, $_i, '.$block_size.'); + $_plaintext.= $_iv ^ $cb; + $_iv = $cb; + $_len-= '.$block_size.'; + $_i+= '.$block_size.'; + } + if ($_len) { + $in = $_iv; + '.$encrypt_block.' + $_iv = $in; + $_plaintext.= $_iv ^ substr($_text, $_i); + $_iv = substr_replace($_iv, substr($_text, $_i), 0, $_len); + $_pos = $_len; + } + + return $_plaintext; + '; + break; + case CRYPT_MODE_OFB: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + $_xor = $self->encryptIV; + $_buffer = &$self->enbuffer; + + if (strlen($_buffer["xor"])) { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["xor"])) { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_buffer["xor"].= $_xor; + } + $_key = $self->_string_shift($_buffer["xor"], '.$block_size.'); + $_ciphertext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_ciphertext.= substr($_text, $_i, '.$block_size.') ^ $_xor; + } + $_key = $_xor; + } + if ($self->continuousBuffer) { + $self->encryptIV = $_xor; + if ($_start = $_plaintext_len % '.$block_size.') { + $_buffer["xor"] = substr($_key, $_start) . $_buffer["xor"]; + } + } + return $_ciphertext; + '; + + $decrypt = $init_encrypt . ' + $_plaintext = ""; + $_ciphertext_len = strlen($_text); + $_xor = $self->decryptIV; + $_buffer = &$self->debuffer; + + if (strlen($_buffer["xor"])) { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["xor"])) { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_buffer["xor"].= $_xor; + } + $_key = $self->_string_shift($_buffer["xor"], '.$block_size.'); + $_plaintext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_plaintext.= substr($_text, $_i, '.$block_size.') ^ $_xor; + } + $_key = $_xor; + } + if ($self->continuousBuffer) { + $self->decryptIV = $_xor; + if ($_start = $_ciphertext_len % '.$block_size.') { + $_buffer["xor"] = substr($_key, $_start) . $_buffer["xor"]; + } + } + return $_plaintext; + '; + break; + case CRYPT_MODE_STREAM: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + '.$encrypt_block.' + return $_ciphertext; + '; + $decrypt = $init_decrypt . ' + $_plaintext = ""; + '.$decrypt_block.' + return $_plaintext; + '; + break; + // case CRYPT_MODE_CBC: + default: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + + $in = $self->encryptIV; + + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $in = substr($_text, $_i, '.$block_size.') ^ $in; + '.$encrypt_block.' + $_ciphertext.= $in; + } + + if ($self->continuousBuffer) { + $self->encryptIV = $in; + } + + return $_ciphertext; + '; + + $decrypt = $init_decrypt . ' + $_plaintext = ""; + $_text = str_pad($_text, strlen($_text) + ('.$block_size.' - strlen($_text) % '.$block_size.') % '.$block_size.', chr(0)); + $_ciphertext_len = strlen($_text); + + $_iv = $self->decryptIV; + + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $in = $_block = substr($_text, $_i, '.$block_size.'); + '.$decrypt_block.' + $_plaintext.= $in ^ $_iv; + $_iv = $_block; + } + + if ($self->continuousBuffer) { + $self->decryptIV = $_iv; + } + + return $self->_unpad($_plaintext); + '; + break; + } + + // Create the $inline function and return its name as string. Ready to run! + if (version_compare(PHP_VERSION, '5.3.0') >= 0) { + eval('$func = function ($_action, &$self, $_text) { ' . $init_crypt . 'if ($_action == "encrypt") { ' . $encrypt . ' } else { ' . $decrypt . ' } };'); + return $func; + } + + return create_function('$_action, &$self, $_text', $init_crypt . 'if ($_action == "encrypt") { ' . $encrypt . ' } else { ' . $decrypt . ' }'); + } + + /** + * Holds the lambda_functions table (classwide) + * + * Each name of the lambda function, created from + * _setupInlineCrypt() && _createInlineCryptFunction() + * is stored, classwide (!), here for reusing. + * + * The string-based index of $function is a classwide + * unique value representing, at least, the $mode of + * operation (or more... depends of the optimizing level) + * for which $mode the lambda function was created. + * + * @access private + * @return array &$functions + */ + function &_getLambdaFunctions() + { + static $functions = array(); + return $functions; + } + + /** + * Generates a digest from $bytes + * + * @see self::_setupInlineCrypt() + * @access private + * @param string $bytes + * @return string + */ + function _hashInlineCryptFunction($bytes) + { + if (!defined('CRYPT_BASE_WHIRLPOOL_AVAILABLE')) { + define('CRYPT_BASE_WHIRLPOOL_AVAILABLE', (bool)(extension_loaded('hash') && in_array('whirlpool', hash_algos()))); + } + + $result = ''; + $hash = $bytes; + + switch (true) { + case CRYPT_BASE_WHIRLPOOL_AVAILABLE: + foreach (str_split($bytes, 64) as $t) { + $hash = hash('whirlpool', $hash, true); + $result .= $t ^ $hash; + } + return $result . hash('whirlpool', $hash, true); + default: + $len = strlen($bytes); + for ($i = 0; $i < $len; $i+=20) { + $t = substr($bytes, $i, 20); + $hash = pack('H*', sha1($hash)); + $result .= $t ^ $hash; + } + return $result . pack('H*', sha1($hash)); + } + } + + /** + * Convert float to int + * + * On 32-bit Linux installs running PHP < 5.3 converting floats to ints doesn't always work + * + * @access private + * @param string $x + * @return int + */ + function safe_intval($x) + { + switch (true) { + case is_int($x): + // PHP 5.3, per http://php.net/releases/5_3_0.php, introduced "more consistent float rounding" + case version_compare(PHP_VERSION, '5.3.0') >= 0 && (php_uname('m') & "\xDF\xDF\xDF") != 'ARM': + // PHP_OS & "\xDF\xDF\xDF" == strtoupper(substr(PHP_OS, 0, 3)), but a lot faster + case (PHP_OS & "\xDF\xDF\xDF") === 'WIN': + return $x; + } + return (fmod($x, 0x80000000) & 0x7FFFFFFF) | + ((fmod(floor($x / 0x80000000), 2) & 1) << 31); + } + + /** + * eval()'able string for in-line float to int + * + * @access private + * @return string + */ + function safe_intval_inline() + { + // on 32-bit linux systems with PHP < 5.3 float to integer conversion is bad + switch (true) { + case defined('PHP_INT_SIZE') && PHP_INT_SIZE == 8: + case version_compare(PHP_VERSION, '5.3.0') >= 0 && (php_uname('m') & "\xDF\xDF\xDF") != 'ARM': + case (PHP_OS & "\xDF\xDF\xDF") === 'WIN': + return '%s'; + break; + default: + $safeint = '(is_int($temp = %s) ? $temp : (fmod($temp, 0x80000000) & 0x7FFFFFFF) | '; + return $safeint . '((fmod(floor($temp / 0x80000000), 2) & 1) << 31))'; + } + } + + /** + * Dummy error handler to suppress mcrypt errors + * + * @access private + */ + function do_nothing() + { + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/Blowfish.php b/app/Http/Controllers/dgaAdmin/Crypt/Blowfish.php new file mode 100644 index 0000000..cc88511 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/Blowfish.php @@ -0,0 +1,644 @@ + + * setKey('12345678901234567890123456789012'); + * + * $plaintext = str_repeat('a', 1024); + * + * echo $blowfish->decrypt($blowfish->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Blowfish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_BLOWFISH_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_BLOWFISH_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_BLOWFISH_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_BLOWFISH_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_BLOWFISH_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of Blowfish. + * + * @package Crypt_Blowfish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @access public + */ +class Crypt_Blowfish extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 8; + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'BLOWFISH'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'blowfish'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 500; + + /** + * The fixed subkeys boxes ($sbox0 - $sbox3) with 256 entries each + * + * S-Box 0 + * + * @access private + * @var array + */ + var $sbox0 = array( + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a + ); + + /** + * S-Box 1 + * + * @access private + * @var array + */ + var $sbox1 = array( + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 + ); + + /** + * S-Box 2 + * + * @access private + * @var array + */ + var $sbox2 = array( + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 + ); + + /** + * S-Box 3 + * + * @access private + * @var array + */ + var $sbox3 = array( + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 + ); + + /** + * P-Array consists of 18 32-bit subkeys + * + * @var array + * @access private + */ + var $parray = array( + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b + ); + + /** + * The BCTX-working Array + * + * Holds the expanded key [p] and the key-depended s-boxes [sb] + * + * @var array + * @access private + */ + var $bctx; + + /** + * Holds the last used key + * + * @var array + * @access private + */ + var $kl; + + /** + * The Key Length (in bytes) + * + * @see Crypt_Base::setKeyLength() + * @var int + * @access private + * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16. Exists in conjunction with $Nk + * because the encryption / decryption / key schedule creation requires this number and not $key_length. We could + * derive this from $key_length or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $key_length = 16; + + /** + * Sets the key length. + * + * Key lengths can be between 32 and 448 bits. + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + if ($length < 32) { + $this->key_length = 4; + } elseif ($length > 448) { + $this->key_length = 56; + } else { + $this->key_length = $length >> 3; + } + + parent::setKeyLength($length); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::isValidEngine() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($engine == CRYPT_ENGINE_OPENSSL) { + if (version_compare(PHP_VERSION, '5.3.7') < 0 && $this->key_length != 16) { + return false; + } + if ($this->key_length < 16) { + return false; + } + $this->cipher_name_openssl_ecb = 'bf-ecb'; + $this->cipher_name_openssl = 'bf-' . $this->_openssl_translate_mode(); + } + + return parent::isValidEngine($engine); + } + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (isset($this->kl['key']) && $this->key === $this->kl['key']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key); + + /* key-expanding p[] and S-Box building sb[] */ + $this->bctx = array( + 'p' => array(), + 'sb' => array( + $this->sbox0, + $this->sbox1, + $this->sbox2, + $this->sbox3 + ) + ); + + // unpack binary string in unsigned chars + $key = array_values(unpack('C*', $this->key)); + $keyl = count($key); + for ($j = 0, $i = 0; $i < 18; ++$i) { + // xor P1 with the first 32-bits of the key, xor P2 with the second 32-bits ... + for ($data = 0, $k = 0; $k < 4; ++$k) { + $data = ($data << 8) | $key[$j]; + if (++$j >= $keyl) { + $j = 0; + } + } + $this->bctx['p'][] = $this->parray[$i] ^ $data; + } + + // encrypt the zero-string, replace P1 and P2 with the encrypted data, + // encrypt P3 and P4 with the new P1 and P2, do it with all P-array and subkeys + $data = "\0\0\0\0\0\0\0\0"; + for ($i = 0; $i < 18; $i += 2) { + list($l, $r) = array_values(unpack('N*', $data = $this->_encryptBlock($data))); + $this->bctx['p'][$i ] = $l; + $this->bctx['p'][$i + 1] = $r; + } + for ($i = 0; $i < 4; ++$i) { + for ($j = 0; $j < 256; $j += 2) { + list($l, $r) = array_values(unpack('N*', $data = $this->_encryptBlock($data))); + $this->bctx['sb'][$i][$j ] = $l; + $this->bctx['sb'][$i][$j + 1] = $r; + } + } + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + $p = $this->bctx["p"]; + // extract($this->bctx["sb"], EXTR_PREFIX_ALL, "sb"); // slower + $sb_0 = $this->bctx["sb"][0]; + $sb_1 = $this->bctx["sb"][1]; + $sb_2 = $this->bctx["sb"][2]; + $sb_3 = $this->bctx["sb"][3]; + + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + + for ($i = 0; $i < 16; $i+= 2) { + $l^= $p[$i]; + $r^= $this->safe_intval(($this->safe_intval($sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]) ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]); + + $r^= $p[$i + 1]; + $l^= $this->safe_intval(($this->safe_intval($sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]) ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]); + } + return pack("N*", $r ^ $p[17], $l ^ $p[16]); + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + $p = $this->bctx["p"]; + $sb_0 = $this->bctx["sb"][0]; + $sb_1 = $this->bctx["sb"][1]; + $sb_2 = $this->bctx["sb"][2]; + $sb_3 = $this->bctx["sb"][3]; + + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + + for ($i = 17; $i > 2; $i-= 2) { + $l^= $p[$i]; + $r^= $this->safe_intval(($this->safe_intval($sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]) ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]); + + $r^= $p[$i - 1]; + $l^= $this->safe_intval(($this->safe_intval($sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]) ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]); + } + return pack("N*", $r ^ $p[0], $l ^ $p[1]); + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions =& Crypt_Blowfish::_getLambdaFunctions(); + + // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. + // (Currently, for Crypt_Blowfish, one generated $lambda_function cost on php5.5@32bit ~100kb unfreeable mem and ~180kb on php5.5@64bit) + // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one. + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_Blowfish, {$this->mode}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + $safeint = $this->safe_intval_inline(); + + if (!isset($lambda_functions[$code_hash])) { + switch (true) { + case $gen_hi_opt_code: + $p = $this->bctx['p']; + $init_crypt = ' + static $sb_0, $sb_1, $sb_2, $sb_3; + if (!$sb_0) { + $sb_0 = $self->bctx["sb"][0]; + $sb_1 = $self->bctx["sb"][1]; + $sb_2 = $self->bctx["sb"][2]; + $sb_3 = $self->bctx["sb"][3]; + } + '; + break; + default: + $p = array(); + for ($i = 0; $i < 18; ++$i) { + $p[] = '$p_' . $i; + } + $init_crypt = ' + list($sb_0, $sb_1, $sb_2, $sb_3) = $self->bctx["sb"]; + list(' . implode(',', $p) . ') = $self->bctx["p"]; + + '; + } + + // Generating encrypt code: + $encrypt_block = ' + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + '; + for ($i = 0; $i < 16; $i+= 2) { + $encrypt_block.= ' + $l^= ' . $p[$i] . '; + $r^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]') . ' ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]') . '; + + $r^= ' . $p[$i + 1] . '; + $l^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]') . ' ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]') . '; + '; + } + $encrypt_block.= ' + $in = pack("N*", + $r ^ ' . $p[17] . ', + $l ^ ' . $p[16] . ' + ); + '; + + // Generating decrypt code: + $decrypt_block = ' + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + '; + + for ($i = 17; $i > 2; $i-= 2) { + $decrypt_block.= ' + $l^= ' . $p[$i] . '; + $r^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]') . ' ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]') . '; + + $r^= ' . $p[$i - 1] . '; + $l^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]') . ' ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]') . '; + '; + } + + $decrypt_block.= ' + $in = pack("N*", + $r ^ ' . $p[0] . ', + $l ^ ' . $p[1] . ' + ); + '; + + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'init_encrypt' => '', + 'init_decrypt' => '', + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/DES.php b/app/Http/Controllers/dgaAdmin/Crypt/DES.php new file mode 100644 index 0000000..4c57401 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/DES.php @@ -0,0 +1,1516 @@ + + * setKey('abcdefgh'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $des->decrypt($des->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_DES + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access private + * @see self::_setupKey() + * @see self::_processBlock() + */ +/** + * Contains $keys[CRYPT_DES_ENCRYPT] + */ +define('CRYPT_DES_ENCRYPT', 0); +/** + * Contains $keys[CRYPT_DES_DECRYPT] + */ +define('CRYPT_DES_DECRYPT', 1); +/**#@-*/ + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_DES_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_DES_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_DES_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_DES_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_DES_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of DES. + * + * @package Crypt_DES + * @author Jim Wigginton + * @access public + */ +class Crypt_DES extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 8; + + /** + * Key Length (in bytes) + * + * @see Crypt_Base::setKeyLength() + * @var int + * @access private + */ + var $key_length = 8; + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'DES'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'des'; + + /** + * The OpenSSL names of the cipher / modes + * + * @see Crypt_Base::openssl_mode_names + * @var array + * @access private + */ + var $openssl_mode_names = array( + CRYPT_MODE_ECB => 'des-ecb', + CRYPT_MODE_CBC => 'des-cbc', + CRYPT_MODE_CFB => 'des-cfb', + CRYPT_MODE_OFB => 'des-ofb' + // CRYPT_MODE_CTR is undefined for DES + ); + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 500; + + /** + * Switch for DES/3DES encryption + * + * Used only if $engine == CRYPT_DES_MODE_INTERNAL + * + * @see self::_setupKey() + * @see self::_processBlock() + * @var int + * @access private + */ + var $des_rounds = 1; + + /** + * max possible size of $key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key_length_max = 8; + + /** + * The Key Schedule + * + * @see self::_setupKey() + * @var array + * @access private + */ + var $keys; + + /** + * Shuffle table. + * + * For each byte value index, the entry holds an 8-byte string + * with each byte containing all bits in the same state as the + * corresponding bit in the index value. + * + * @see self::_processBlock() + * @see self::_setupKey() + * @var array + * @access private + */ + var $shuffle = array( + "\x00\x00\x00\x00\x00\x00\x00\x00", "\x00\x00\x00\x00\x00\x00\x00\xFF", + "\x00\x00\x00\x00\x00\x00\xFF\x00", "\x00\x00\x00\x00\x00\x00\xFF\xFF", + "\x00\x00\x00\x00\x00\xFF\x00\x00", "\x00\x00\x00\x00\x00\xFF\x00\xFF", + "\x00\x00\x00\x00\x00\xFF\xFF\x00", "\x00\x00\x00\x00\x00\xFF\xFF\xFF", + "\x00\x00\x00\x00\xFF\x00\x00\x00", "\x00\x00\x00\x00\xFF\x00\x00\xFF", + "\x00\x00\x00\x00\xFF\x00\xFF\x00", "\x00\x00\x00\x00\xFF\x00\xFF\xFF", + "\x00\x00\x00\x00\xFF\xFF\x00\x00", "\x00\x00\x00\x00\xFF\xFF\x00\xFF", + "\x00\x00\x00\x00\xFF\xFF\xFF\x00", "\x00\x00\x00\x00\xFF\xFF\xFF\xFF", + "\x00\x00\x00\xFF\x00\x00\x00\x00", "\x00\x00\x00\xFF\x00\x00\x00\xFF", + "\x00\x00\x00\xFF\x00\x00\xFF\x00", "\x00\x00\x00\xFF\x00\x00\xFF\xFF", + "\x00\x00\x00\xFF\x00\xFF\x00\x00", "\x00\x00\x00\xFF\x00\xFF\x00\xFF", + "\x00\x00\x00\xFF\x00\xFF\xFF\x00", "\x00\x00\x00\xFF\x00\xFF\xFF\xFF", + "\x00\x00\x00\xFF\xFF\x00\x00\x00", "\x00\x00\x00\xFF\xFF\x00\x00\xFF", + "\x00\x00\x00\xFF\xFF\x00\xFF\x00", "\x00\x00\x00\xFF\xFF\x00\xFF\xFF", + "\x00\x00\x00\xFF\xFF\xFF\x00\x00", "\x00\x00\x00\xFF\xFF\xFF\x00\xFF", + "\x00\x00\x00\xFF\xFF\xFF\xFF\x00", "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF", + "\x00\x00\xFF\x00\x00\x00\x00\x00", "\x00\x00\xFF\x00\x00\x00\x00\xFF", + "\x00\x00\xFF\x00\x00\x00\xFF\x00", "\x00\x00\xFF\x00\x00\x00\xFF\xFF", + "\x00\x00\xFF\x00\x00\xFF\x00\x00", "\x00\x00\xFF\x00\x00\xFF\x00\xFF", + "\x00\x00\xFF\x00\x00\xFF\xFF\x00", "\x00\x00\xFF\x00\x00\xFF\xFF\xFF", + "\x00\x00\xFF\x00\xFF\x00\x00\x00", "\x00\x00\xFF\x00\xFF\x00\x00\xFF", + "\x00\x00\xFF\x00\xFF\x00\xFF\x00", "\x00\x00\xFF\x00\xFF\x00\xFF\xFF", + "\x00\x00\xFF\x00\xFF\xFF\x00\x00", "\x00\x00\xFF\x00\xFF\xFF\x00\xFF", + "\x00\x00\xFF\x00\xFF\xFF\xFF\x00", "\x00\x00\xFF\x00\xFF\xFF\xFF\xFF", + "\x00\x00\xFF\xFF\x00\x00\x00\x00", "\x00\x00\xFF\xFF\x00\x00\x00\xFF", + "\x00\x00\xFF\xFF\x00\x00\xFF\x00", "\x00\x00\xFF\xFF\x00\x00\xFF\xFF", + "\x00\x00\xFF\xFF\x00\xFF\x00\x00", "\x00\x00\xFF\xFF\x00\xFF\x00\xFF", + "\x00\x00\xFF\xFF\x00\xFF\xFF\x00", "\x00\x00\xFF\xFF\x00\xFF\xFF\xFF", + "\x00\x00\xFF\xFF\xFF\x00\x00\x00", "\x00\x00\xFF\xFF\xFF\x00\x00\xFF", + "\x00\x00\xFF\xFF\xFF\x00\xFF\x00", "\x00\x00\xFF\xFF\xFF\x00\xFF\xFF", + "\x00\x00\xFF\xFF\xFF\xFF\x00\x00", "\x00\x00\xFF\xFF\xFF\xFF\x00\xFF", + "\x00\x00\xFF\xFF\xFF\xFF\xFF\x00", "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF", + "\x00\xFF\x00\x00\x00\x00\x00\x00", "\x00\xFF\x00\x00\x00\x00\x00\xFF", + "\x00\xFF\x00\x00\x00\x00\xFF\x00", "\x00\xFF\x00\x00\x00\x00\xFF\xFF", + "\x00\xFF\x00\x00\x00\xFF\x00\x00", "\x00\xFF\x00\x00\x00\xFF\x00\xFF", + "\x00\xFF\x00\x00\x00\xFF\xFF\x00", "\x00\xFF\x00\x00\x00\xFF\xFF\xFF", + "\x00\xFF\x00\x00\xFF\x00\x00\x00", "\x00\xFF\x00\x00\xFF\x00\x00\xFF", + "\x00\xFF\x00\x00\xFF\x00\xFF\x00", "\x00\xFF\x00\x00\xFF\x00\xFF\xFF", + "\x00\xFF\x00\x00\xFF\xFF\x00\x00", "\x00\xFF\x00\x00\xFF\xFF\x00\xFF", + "\x00\xFF\x00\x00\xFF\xFF\xFF\x00", "\x00\xFF\x00\x00\xFF\xFF\xFF\xFF", + "\x00\xFF\x00\xFF\x00\x00\x00\x00", "\x00\xFF\x00\xFF\x00\x00\x00\xFF", + "\x00\xFF\x00\xFF\x00\x00\xFF\x00", "\x00\xFF\x00\xFF\x00\x00\xFF\xFF", + "\x00\xFF\x00\xFF\x00\xFF\x00\x00", "\x00\xFF\x00\xFF\x00\xFF\x00\xFF", + "\x00\xFF\x00\xFF\x00\xFF\xFF\x00", "\x00\xFF\x00\xFF\x00\xFF\xFF\xFF", + "\x00\xFF\x00\xFF\xFF\x00\x00\x00", "\x00\xFF\x00\xFF\xFF\x00\x00\xFF", + "\x00\xFF\x00\xFF\xFF\x00\xFF\x00", "\x00\xFF\x00\xFF\xFF\x00\xFF\xFF", + "\x00\xFF\x00\xFF\xFF\xFF\x00\x00", "\x00\xFF\x00\xFF\xFF\xFF\x00\xFF", + "\x00\xFF\x00\xFF\xFF\xFF\xFF\x00", "\x00\xFF\x00\xFF\xFF\xFF\xFF\xFF", + "\x00\xFF\xFF\x00\x00\x00\x00\x00", "\x00\xFF\xFF\x00\x00\x00\x00\xFF", + "\x00\xFF\xFF\x00\x00\x00\xFF\x00", "\x00\xFF\xFF\x00\x00\x00\xFF\xFF", + "\x00\xFF\xFF\x00\x00\xFF\x00\x00", "\x00\xFF\xFF\x00\x00\xFF\x00\xFF", + "\x00\xFF\xFF\x00\x00\xFF\xFF\x00", "\x00\xFF\xFF\x00\x00\xFF\xFF\xFF", + "\x00\xFF\xFF\x00\xFF\x00\x00\x00", "\x00\xFF\xFF\x00\xFF\x00\x00\xFF", + "\x00\xFF\xFF\x00\xFF\x00\xFF\x00", "\x00\xFF\xFF\x00\xFF\x00\xFF\xFF", + "\x00\xFF\xFF\x00\xFF\xFF\x00\x00", "\x00\xFF\xFF\x00\xFF\xFF\x00\xFF", + "\x00\xFF\xFF\x00\xFF\xFF\xFF\x00", "\x00\xFF\xFF\x00\xFF\xFF\xFF\xFF", + "\x00\xFF\xFF\xFF\x00\x00\x00\x00", "\x00\xFF\xFF\xFF\x00\x00\x00\xFF", + "\x00\xFF\xFF\xFF\x00\x00\xFF\x00", "\x00\xFF\xFF\xFF\x00\x00\xFF\xFF", + "\x00\xFF\xFF\xFF\x00\xFF\x00\x00", "\x00\xFF\xFF\xFF\x00\xFF\x00\xFF", + "\x00\xFF\xFF\xFF\x00\xFF\xFF\x00", "\x00\xFF\xFF\xFF\x00\xFF\xFF\xFF", + "\x00\xFF\xFF\xFF\xFF\x00\x00\x00", "\x00\xFF\xFF\xFF\xFF\x00\x00\xFF", + "\x00\xFF\xFF\xFF\xFF\x00\xFF\x00", "\x00\xFF\xFF\xFF\xFF\x00\xFF\xFF", + "\x00\xFF\xFF\xFF\xFF\xFF\x00\x00", "\x00\xFF\xFF\xFF\xFF\xFF\x00\xFF", + "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00", "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF", + "\xFF\x00\x00\x00\x00\x00\x00\x00", "\xFF\x00\x00\x00\x00\x00\x00\xFF", + "\xFF\x00\x00\x00\x00\x00\xFF\x00", "\xFF\x00\x00\x00\x00\x00\xFF\xFF", + "\xFF\x00\x00\x00\x00\xFF\x00\x00", "\xFF\x00\x00\x00\x00\xFF\x00\xFF", + "\xFF\x00\x00\x00\x00\xFF\xFF\x00", "\xFF\x00\x00\x00\x00\xFF\xFF\xFF", + "\xFF\x00\x00\x00\xFF\x00\x00\x00", "\xFF\x00\x00\x00\xFF\x00\x00\xFF", + "\xFF\x00\x00\x00\xFF\x00\xFF\x00", "\xFF\x00\x00\x00\xFF\x00\xFF\xFF", + "\xFF\x00\x00\x00\xFF\xFF\x00\x00", "\xFF\x00\x00\x00\xFF\xFF\x00\xFF", + "\xFF\x00\x00\x00\xFF\xFF\xFF\x00", "\xFF\x00\x00\x00\xFF\xFF\xFF\xFF", + "\xFF\x00\x00\xFF\x00\x00\x00\x00", "\xFF\x00\x00\xFF\x00\x00\x00\xFF", + "\xFF\x00\x00\xFF\x00\x00\xFF\x00", "\xFF\x00\x00\xFF\x00\x00\xFF\xFF", + "\xFF\x00\x00\xFF\x00\xFF\x00\x00", "\xFF\x00\x00\xFF\x00\xFF\x00\xFF", + "\xFF\x00\x00\xFF\x00\xFF\xFF\x00", "\xFF\x00\x00\xFF\x00\xFF\xFF\xFF", + "\xFF\x00\x00\xFF\xFF\x00\x00\x00", "\xFF\x00\x00\xFF\xFF\x00\x00\xFF", + "\xFF\x00\x00\xFF\xFF\x00\xFF\x00", "\xFF\x00\x00\xFF\xFF\x00\xFF\xFF", + "\xFF\x00\x00\xFF\xFF\xFF\x00\x00", "\xFF\x00\x00\xFF\xFF\xFF\x00\xFF", + "\xFF\x00\x00\xFF\xFF\xFF\xFF\x00", "\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF", + "\xFF\x00\xFF\x00\x00\x00\x00\x00", "\xFF\x00\xFF\x00\x00\x00\x00\xFF", + "\xFF\x00\xFF\x00\x00\x00\xFF\x00", "\xFF\x00\xFF\x00\x00\x00\xFF\xFF", + "\xFF\x00\xFF\x00\x00\xFF\x00\x00", "\xFF\x00\xFF\x00\x00\xFF\x00\xFF", + "\xFF\x00\xFF\x00\x00\xFF\xFF\x00", "\xFF\x00\xFF\x00\x00\xFF\xFF\xFF", + "\xFF\x00\xFF\x00\xFF\x00\x00\x00", "\xFF\x00\xFF\x00\xFF\x00\x00\xFF", + "\xFF\x00\xFF\x00\xFF\x00\xFF\x00", "\xFF\x00\xFF\x00\xFF\x00\xFF\xFF", + "\xFF\x00\xFF\x00\xFF\xFF\x00\x00", "\xFF\x00\xFF\x00\xFF\xFF\x00\xFF", + "\xFF\x00\xFF\x00\xFF\xFF\xFF\x00", "\xFF\x00\xFF\x00\xFF\xFF\xFF\xFF", + "\xFF\x00\xFF\xFF\x00\x00\x00\x00", "\xFF\x00\xFF\xFF\x00\x00\x00\xFF", + "\xFF\x00\xFF\xFF\x00\x00\xFF\x00", "\xFF\x00\xFF\xFF\x00\x00\xFF\xFF", + "\xFF\x00\xFF\xFF\x00\xFF\x00\x00", "\xFF\x00\xFF\xFF\x00\xFF\x00\xFF", + "\xFF\x00\xFF\xFF\x00\xFF\xFF\x00", "\xFF\x00\xFF\xFF\x00\xFF\xFF\xFF", + "\xFF\x00\xFF\xFF\xFF\x00\x00\x00", "\xFF\x00\xFF\xFF\xFF\x00\x00\xFF", + "\xFF\x00\xFF\xFF\xFF\x00\xFF\x00", "\xFF\x00\xFF\xFF\xFF\x00\xFF\xFF", + "\xFF\x00\xFF\xFF\xFF\xFF\x00\x00", "\xFF\x00\xFF\xFF\xFF\xFF\x00\xFF", + "\xFF\x00\xFF\xFF\xFF\xFF\xFF\x00", "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF", + "\xFF\xFF\x00\x00\x00\x00\x00\x00", "\xFF\xFF\x00\x00\x00\x00\x00\xFF", + "\xFF\xFF\x00\x00\x00\x00\xFF\x00", "\xFF\xFF\x00\x00\x00\x00\xFF\xFF", + "\xFF\xFF\x00\x00\x00\xFF\x00\x00", "\xFF\xFF\x00\x00\x00\xFF\x00\xFF", + "\xFF\xFF\x00\x00\x00\xFF\xFF\x00", "\xFF\xFF\x00\x00\x00\xFF\xFF\xFF", + "\xFF\xFF\x00\x00\xFF\x00\x00\x00", "\xFF\xFF\x00\x00\xFF\x00\x00\xFF", + "\xFF\xFF\x00\x00\xFF\x00\xFF\x00", "\xFF\xFF\x00\x00\xFF\x00\xFF\xFF", + "\xFF\xFF\x00\x00\xFF\xFF\x00\x00", "\xFF\xFF\x00\x00\xFF\xFF\x00\xFF", + "\xFF\xFF\x00\x00\xFF\xFF\xFF\x00", "\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF", + "\xFF\xFF\x00\xFF\x00\x00\x00\x00", "\xFF\xFF\x00\xFF\x00\x00\x00\xFF", + "\xFF\xFF\x00\xFF\x00\x00\xFF\x00", "\xFF\xFF\x00\xFF\x00\x00\xFF\xFF", + "\xFF\xFF\x00\xFF\x00\xFF\x00\x00", "\xFF\xFF\x00\xFF\x00\xFF\x00\xFF", + "\xFF\xFF\x00\xFF\x00\xFF\xFF\x00", "\xFF\xFF\x00\xFF\x00\xFF\xFF\xFF", + "\xFF\xFF\x00\xFF\xFF\x00\x00\x00", "\xFF\xFF\x00\xFF\xFF\x00\x00\xFF", + "\xFF\xFF\x00\xFF\xFF\x00\xFF\x00", "\xFF\xFF\x00\xFF\xFF\x00\xFF\xFF", + "\xFF\xFF\x00\xFF\xFF\xFF\x00\x00", "\xFF\xFF\x00\xFF\xFF\xFF\x00\xFF", + "\xFF\xFF\x00\xFF\xFF\xFF\xFF\x00", "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF", + "\xFF\xFF\xFF\x00\x00\x00\x00\x00", "\xFF\xFF\xFF\x00\x00\x00\x00\xFF", + "\xFF\xFF\xFF\x00\x00\x00\xFF\x00", "\xFF\xFF\xFF\x00\x00\x00\xFF\xFF", + "\xFF\xFF\xFF\x00\x00\xFF\x00\x00", "\xFF\xFF\xFF\x00\x00\xFF\x00\xFF", + "\xFF\xFF\xFF\x00\x00\xFF\xFF\x00", "\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF", + "\xFF\xFF\xFF\x00\xFF\x00\x00\x00", "\xFF\xFF\xFF\x00\xFF\x00\x00\xFF", + "\xFF\xFF\xFF\x00\xFF\x00\xFF\x00", "\xFF\xFF\xFF\x00\xFF\x00\xFF\xFF", + "\xFF\xFF\xFF\x00\xFF\xFF\x00\x00", "\xFF\xFF\xFF\x00\xFF\xFF\x00\xFF", + "\xFF\xFF\xFF\x00\xFF\xFF\xFF\x00", "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF", + "\xFF\xFF\xFF\xFF\x00\x00\x00\x00", "\xFF\xFF\xFF\xFF\x00\x00\x00\xFF", + "\xFF\xFF\xFF\xFF\x00\x00\xFF\x00", "\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF", + "\xFF\xFF\xFF\xFF\x00\xFF\x00\x00", "\xFF\xFF\xFF\xFF\x00\xFF\x00\xFF", + "\xFF\xFF\xFF\xFF\x00\xFF\xFF\x00", "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF", + "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00", "\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF", + "\xFF\xFF\xFF\xFF\xFF\x00\xFF\x00", "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF", + "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00", "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF", + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" + ); + + /** + * IP mapping helper table. + * + * Indexing this table with each source byte performs the initial bit permutation. + * + * @var array + * @access private + */ + var $ipmap = array( + 0x00, 0x10, 0x01, 0x11, 0x20, 0x30, 0x21, 0x31, + 0x02, 0x12, 0x03, 0x13, 0x22, 0x32, 0x23, 0x33, + 0x40, 0x50, 0x41, 0x51, 0x60, 0x70, 0x61, 0x71, + 0x42, 0x52, 0x43, 0x53, 0x62, 0x72, 0x63, 0x73, + 0x04, 0x14, 0x05, 0x15, 0x24, 0x34, 0x25, 0x35, + 0x06, 0x16, 0x07, 0x17, 0x26, 0x36, 0x27, 0x37, + 0x44, 0x54, 0x45, 0x55, 0x64, 0x74, 0x65, 0x75, + 0x46, 0x56, 0x47, 0x57, 0x66, 0x76, 0x67, 0x77, + 0x80, 0x90, 0x81, 0x91, 0xA0, 0xB0, 0xA1, 0xB1, + 0x82, 0x92, 0x83, 0x93, 0xA2, 0xB2, 0xA3, 0xB3, + 0xC0, 0xD0, 0xC1, 0xD1, 0xE0, 0xF0, 0xE1, 0xF1, + 0xC2, 0xD2, 0xC3, 0xD3, 0xE2, 0xF2, 0xE3, 0xF3, + 0x84, 0x94, 0x85, 0x95, 0xA4, 0xB4, 0xA5, 0xB5, + 0x86, 0x96, 0x87, 0x97, 0xA6, 0xB6, 0xA7, 0xB7, + 0xC4, 0xD4, 0xC5, 0xD5, 0xE4, 0xF4, 0xE5, 0xF5, + 0xC6, 0xD6, 0xC7, 0xD7, 0xE6, 0xF6, 0xE7, 0xF7, + 0x08, 0x18, 0x09, 0x19, 0x28, 0x38, 0x29, 0x39, + 0x0A, 0x1A, 0x0B, 0x1B, 0x2A, 0x3A, 0x2B, 0x3B, + 0x48, 0x58, 0x49, 0x59, 0x68, 0x78, 0x69, 0x79, + 0x4A, 0x5A, 0x4B, 0x5B, 0x6A, 0x7A, 0x6B, 0x7B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x2C, 0x3C, 0x2D, 0x3D, + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4C, 0x5C, 0x4D, 0x5D, 0x6C, 0x7C, 0x6D, 0x7D, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x88, 0x98, 0x89, 0x99, 0xA8, 0xB8, 0xA9, 0xB9, + 0x8A, 0x9A, 0x8B, 0x9B, 0xAA, 0xBA, 0xAB, 0xBB, + 0xC8, 0xD8, 0xC9, 0xD9, 0xE8, 0xF8, 0xE9, 0xF9, + 0xCA, 0xDA, 0xCB, 0xDB, 0xEA, 0xFA, 0xEB, 0xFB, + 0x8C, 0x9C, 0x8D, 0x9D, 0xAC, 0xBC, 0xAD, 0xBD, + 0x8E, 0x9E, 0x8F, 0x9F, 0xAE, 0xBE, 0xAF, 0xBF, + 0xCC, 0xDC, 0xCD, 0xDD, 0xEC, 0xFC, 0xED, 0xFD, + 0xCE, 0xDE, 0xCF, 0xDF, 0xEE, 0xFE, 0xEF, 0xFF + ); + + /** + * Inverse IP mapping helper table. + * Indexing this table with a byte value reverses the bit order. + * + * @var array + * @access private + */ + var $invipmap = array( + 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, + 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, + 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, + 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, + 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, + 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, + 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, + 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, + 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, + 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, + 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, + 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, + 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, + 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, + 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, + 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, + 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, + 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, + 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, + 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, + 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, + 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, + 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, + 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, + 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, + 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, + 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, + 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, + 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, + 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, + 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, + 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF + ); + + /** + * Pre-permuted S-box1 + * + * Each box ($sbox1-$sbox8) has been vectorized, then each value pre-permuted using the + * P table: concatenation can then be replaced by exclusive ORs. + * + * @var array + * @access private + */ + var $sbox1 = array( + 0x00808200, 0x00000000, 0x00008000, 0x00808202, + 0x00808002, 0x00008202, 0x00000002, 0x00008000, + 0x00000200, 0x00808200, 0x00808202, 0x00000200, + 0x00800202, 0x00808002, 0x00800000, 0x00000002, + 0x00000202, 0x00800200, 0x00800200, 0x00008200, + 0x00008200, 0x00808000, 0x00808000, 0x00800202, + 0x00008002, 0x00800002, 0x00800002, 0x00008002, + 0x00000000, 0x00000202, 0x00008202, 0x00800000, + 0x00008000, 0x00808202, 0x00000002, 0x00808000, + 0x00808200, 0x00800000, 0x00800000, 0x00000200, + 0x00808002, 0x00008000, 0x00008200, 0x00800002, + 0x00000200, 0x00000002, 0x00800202, 0x00008202, + 0x00808202, 0x00008002, 0x00808000, 0x00800202, + 0x00800002, 0x00000202, 0x00008202, 0x00808200, + 0x00000202, 0x00800200, 0x00800200, 0x00000000, + 0x00008002, 0x00008200, 0x00000000, 0x00808002 + ); + + /** + * Pre-permuted S-box2 + * + * @var array + * @access private + */ + var $sbox2 = array( + 0x40084010, 0x40004000, 0x00004000, 0x00084010, + 0x00080000, 0x00000010, 0x40080010, 0x40004010, + 0x40000010, 0x40084010, 0x40084000, 0x40000000, + 0x40004000, 0x00080000, 0x00000010, 0x40080010, + 0x00084000, 0x00080010, 0x40004010, 0x00000000, + 0x40000000, 0x00004000, 0x00084010, 0x40080000, + 0x00080010, 0x40000010, 0x00000000, 0x00084000, + 0x00004010, 0x40084000, 0x40080000, 0x00004010, + 0x00000000, 0x00084010, 0x40080010, 0x00080000, + 0x40004010, 0x40080000, 0x40084000, 0x00004000, + 0x40080000, 0x40004000, 0x00000010, 0x40084010, + 0x00084010, 0x00000010, 0x00004000, 0x40000000, + 0x00004010, 0x40084000, 0x00080000, 0x40000010, + 0x00080010, 0x40004010, 0x40000010, 0x00080010, + 0x00084000, 0x00000000, 0x40004000, 0x00004010, + 0x40000000, 0x40080010, 0x40084010, 0x00084000 + ); + + /** + * Pre-permuted S-box3 + * + * @var array + * @access private + */ + var $sbox3 = array( + 0x00000104, 0x04010100, 0x00000000, 0x04010004, + 0x04000100, 0x00000000, 0x00010104, 0x04000100, + 0x00010004, 0x04000004, 0x04000004, 0x00010000, + 0x04010104, 0x00010004, 0x04010000, 0x00000104, + 0x04000000, 0x00000004, 0x04010100, 0x00000100, + 0x00010100, 0x04010000, 0x04010004, 0x00010104, + 0x04000104, 0x00010100, 0x00010000, 0x04000104, + 0x00000004, 0x04010104, 0x00000100, 0x04000000, + 0x04010100, 0x04000000, 0x00010004, 0x00000104, + 0x00010000, 0x04010100, 0x04000100, 0x00000000, + 0x00000100, 0x00010004, 0x04010104, 0x04000100, + 0x04000004, 0x00000100, 0x00000000, 0x04010004, + 0x04000104, 0x00010000, 0x04000000, 0x04010104, + 0x00000004, 0x00010104, 0x00010100, 0x04000004, + 0x04010000, 0x04000104, 0x00000104, 0x04010000, + 0x00010104, 0x00000004, 0x04010004, 0x00010100 + ); + + /** + * Pre-permuted S-box4 + * + * @var array + * @access private + */ + var $sbox4 = array( + 0x80401000, 0x80001040, 0x80001040, 0x00000040, + 0x00401040, 0x80400040, 0x80400000, 0x80001000, + 0x00000000, 0x00401000, 0x00401000, 0x80401040, + 0x80000040, 0x00000000, 0x00400040, 0x80400000, + 0x80000000, 0x00001000, 0x00400000, 0x80401000, + 0x00000040, 0x00400000, 0x80001000, 0x00001040, + 0x80400040, 0x80000000, 0x00001040, 0x00400040, + 0x00001000, 0x00401040, 0x80401040, 0x80000040, + 0x00400040, 0x80400000, 0x00401000, 0x80401040, + 0x80000040, 0x00000000, 0x00000000, 0x00401000, + 0x00001040, 0x00400040, 0x80400040, 0x80000000, + 0x80401000, 0x80001040, 0x80001040, 0x00000040, + 0x80401040, 0x80000040, 0x80000000, 0x00001000, + 0x80400000, 0x80001000, 0x00401040, 0x80400040, + 0x80001000, 0x00001040, 0x00400000, 0x80401000, + 0x00000040, 0x00400000, 0x00001000, 0x00401040 + ); + + /** + * Pre-permuted S-box5 + * + * @var array + * @access private + */ + var $sbox5 = array( + 0x00000080, 0x01040080, 0x01040000, 0x21000080, + 0x00040000, 0x00000080, 0x20000000, 0x01040000, + 0x20040080, 0x00040000, 0x01000080, 0x20040080, + 0x21000080, 0x21040000, 0x00040080, 0x20000000, + 0x01000000, 0x20040000, 0x20040000, 0x00000000, + 0x20000080, 0x21040080, 0x21040080, 0x01000080, + 0x21040000, 0x20000080, 0x00000000, 0x21000000, + 0x01040080, 0x01000000, 0x21000000, 0x00040080, + 0x00040000, 0x21000080, 0x00000080, 0x01000000, + 0x20000000, 0x01040000, 0x21000080, 0x20040080, + 0x01000080, 0x20000000, 0x21040000, 0x01040080, + 0x20040080, 0x00000080, 0x01000000, 0x21040000, + 0x21040080, 0x00040080, 0x21000000, 0x21040080, + 0x01040000, 0x00000000, 0x20040000, 0x21000000, + 0x00040080, 0x01000080, 0x20000080, 0x00040000, + 0x00000000, 0x20040000, 0x01040080, 0x20000080 + ); + + /** + * Pre-permuted S-box6 + * + * @var array + * @access private + */ + var $sbox6 = array( + 0x10000008, 0x10200000, 0x00002000, 0x10202008, + 0x10200000, 0x00000008, 0x10202008, 0x00200000, + 0x10002000, 0x00202008, 0x00200000, 0x10000008, + 0x00200008, 0x10002000, 0x10000000, 0x00002008, + 0x00000000, 0x00200008, 0x10002008, 0x00002000, + 0x00202000, 0x10002008, 0x00000008, 0x10200008, + 0x10200008, 0x00000000, 0x00202008, 0x10202000, + 0x00002008, 0x00202000, 0x10202000, 0x10000000, + 0x10002000, 0x00000008, 0x10200008, 0x00202000, + 0x10202008, 0x00200000, 0x00002008, 0x10000008, + 0x00200000, 0x10002000, 0x10000000, 0x00002008, + 0x10000008, 0x10202008, 0x00202000, 0x10200000, + 0x00202008, 0x10202000, 0x00000000, 0x10200008, + 0x00000008, 0x00002000, 0x10200000, 0x00202008, + 0x00002000, 0x00200008, 0x10002008, 0x00000000, + 0x10202000, 0x10000000, 0x00200008, 0x10002008 + ); + + /** + * Pre-permuted S-box7 + * + * @var array + * @access private + */ + var $sbox7 = array( + 0x00100000, 0x02100001, 0x02000401, 0x00000000, + 0x00000400, 0x02000401, 0x00100401, 0x02100400, + 0x02100401, 0x00100000, 0x00000000, 0x02000001, + 0x00000001, 0x02000000, 0x02100001, 0x00000401, + 0x02000400, 0x00100401, 0x00100001, 0x02000400, + 0x02000001, 0x02100000, 0x02100400, 0x00100001, + 0x02100000, 0x00000400, 0x00000401, 0x02100401, + 0x00100400, 0x00000001, 0x02000000, 0x00100400, + 0x02000000, 0x00100400, 0x00100000, 0x02000401, + 0x02000401, 0x02100001, 0x02100001, 0x00000001, + 0x00100001, 0x02000000, 0x02000400, 0x00100000, + 0x02100400, 0x00000401, 0x00100401, 0x02100400, + 0x00000401, 0x02000001, 0x02100401, 0x02100000, + 0x00100400, 0x00000000, 0x00000001, 0x02100401, + 0x00000000, 0x00100401, 0x02100000, 0x00000400, + 0x02000001, 0x02000400, 0x00000400, 0x00100001 + ); + + /** + * Pre-permuted S-box8 + * + * @var array + * @access private + */ + var $sbox8 = array( + 0x08000820, 0x00000800, 0x00020000, 0x08020820, + 0x08000000, 0x08000820, 0x00000020, 0x08000000, + 0x00020020, 0x08020000, 0x08020820, 0x00020800, + 0x08020800, 0x00020820, 0x00000800, 0x00000020, + 0x08020000, 0x08000020, 0x08000800, 0x00000820, + 0x00020800, 0x00020020, 0x08020020, 0x08020800, + 0x00000820, 0x00000000, 0x00000000, 0x08020020, + 0x08000020, 0x08000800, 0x00020820, 0x00020000, + 0x00020820, 0x00020000, 0x08020800, 0x00000800, + 0x00000020, 0x08020020, 0x00000800, 0x00020820, + 0x08000800, 0x00000020, 0x08000020, 0x08020000, + 0x08020020, 0x08000000, 0x00020000, 0x08000820, + 0x00000000, 0x08020820, 0x00020020, 0x08000020, + 0x08020000, 0x08000800, 0x08000820, 0x00000000, + 0x08020820, 0x00020800, 0x00020800, 0x00000820, + 0x00000820, 0x00020020, 0x08000000, 0x08020800 + ); + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::isValidEngine() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($this->key_length_max == 8) { + if ($engine == CRYPT_ENGINE_OPENSSL) { + $this->cipher_name_openssl_ecb = 'des-ecb'; + $this->cipher_name_openssl = 'des-' . $this->_openssl_translate_mode(); + } + } + + return parent::isValidEngine($engine); + } + + /** + * Sets the key. + * + * Keys can be of any length. DES, itself, uses 64-bit keys (eg. strlen($key) == 8), however, we + * only use the first eight, if $key has more then eight characters in it, and pad $key with the + * null byte if it is less then eight characters long. + * + * DES also requires that every eighth bit be a parity bit, however, we'll ignore that. + * + * If the key is not explicitly set, it'll be assumed to be all zero's. + * + * @see Crypt_Base::setKey() + * @access public + * @param string $key + */ + function setKey($key) + { + // We check/cut here only up to max length of the key. + // Key padding to the proper length will be done in _setupKey() + if (strlen($key) > $this->key_length_max) { + $key = substr($key, 0, $this->key_length_max); + } + + // Sets the key + parent::setKey($key); + } + + /** + * Encrypts a block + * + * @see Crypt_Base::_encryptBlock() + * @see Crypt_Base::encrypt() + * @see self::encrypt() + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + return $this->_processBlock($in, CRYPT_DES_ENCRYPT); + } + + /** + * Decrypts a block + * + * @see Crypt_Base::_decryptBlock() + * @see Crypt_Base::decrypt() + * @see self::decrypt() + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + return $this->_processBlock($in, CRYPT_DES_DECRYPT); + } + + /** + * Encrypts or decrypts a 64-bit block + * + * $mode should be either CRYPT_DES_ENCRYPT or CRYPT_DES_DECRYPT. See + * {@link http://en.wikipedia.org/wiki/Image:Feistel.png Feistel.png} to get a general + * idea of what this function does. + * + * @see self::_encryptBlock() + * @see self::_decryptBlock() + * @access private + * @param string $block + * @param int $mode + * @return string + */ + function _processBlock($block, $mode) + { + static $sbox1, $sbox2, $sbox3, $sbox4, $sbox5, $sbox6, $sbox7, $sbox8, $shuffleip, $shuffleinvip; + if (!$sbox1) { + $sbox1 = array_map("intval", $this->sbox1); + $sbox2 = array_map("intval", $this->sbox2); + $sbox3 = array_map("intval", $this->sbox3); + $sbox4 = array_map("intval", $this->sbox4); + $sbox5 = array_map("intval", $this->sbox5); + $sbox6 = array_map("intval", $this->sbox6); + $sbox7 = array_map("intval", $this->sbox7); + $sbox8 = array_map("intval", $this->sbox8); + /* Merge $shuffle with $[inv]ipmap */ + for ($i = 0; $i < 256; ++$i) { + $shuffleip[] = $this->shuffle[$this->ipmap[$i]]; + $shuffleinvip[] = $this->shuffle[$this->invipmap[$i]]; + } + } + + $keys = $this->keys[$mode]; + $ki = -1; + + // Do the initial IP permutation. + $t = unpack('Nl/Nr', $block); + list($l, $r) = array($t['l'], $t['r']); + $block = ($shuffleip[ $r & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleip[($r >> 8) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleip[($r >> 24) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleip[ $l & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleip[($l >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleip[($l >> 16) & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleip[($l >> 24) & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); + + // Extract L0 and R0. + $t = unpack('Nl/Nr', $block); + list($l, $r) = array($t['l'], $t['r']); + + for ($des_round = 0; $des_round < $this->des_rounds; ++$des_round) { + // Perform the 16 steps. + for ($i = 0; $i < 16; $i++) { + // start of "the Feistel (F) function" - see the following URL: + // http://en.wikipedia.org/wiki/Image:Data_Encryption_Standard_InfoBox_Diagram.png + // Merge key schedule. + $b1 = (($r >> 3) & 0x1FFFFFFF) ^ ($r << 29) ^ $keys[++$ki]; + $b2 = (($r >> 31) & 0x00000001) ^ ($r << 1) ^ $keys[++$ki]; + + // S-box indexing. + $t = $sbox1[($b1 >> 24) & 0x3F] ^ $sbox2[($b2 >> 24) & 0x3F] ^ + $sbox3[($b1 >> 16) & 0x3F] ^ $sbox4[($b2 >> 16) & 0x3F] ^ + $sbox5[($b1 >> 8) & 0x3F] ^ $sbox6[($b2 >> 8) & 0x3F] ^ + $sbox7[ $b1 & 0x3F] ^ $sbox8[ $b2 & 0x3F] ^ $l; + // end of "the Feistel (F) function" + + $l = $r; + $r = $t; + } + + // Last step should not permute L & R. + $t = $l; + $l = $r; + $r = $t; + } + + // Perform the inverse IP permutation. + return ($shuffleinvip[($r >> 24) & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleinvip[($l >> 24) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleinvip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleinvip[($l >> 16) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleinvip[($r >> 8) & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleinvip[($l >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleinvip[ $r & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleinvip[ $l & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); + } + + /** + * Creates the key schedule + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (isset($this->kl['key']) && $this->key === $this->kl['key'] && $this->des_rounds === $this->kl['des_rounds']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key, 'des_rounds' => $this->des_rounds); + + static $shifts = array( // number of key bits shifted per round + 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 + ); + + static $pc1map = array( + 0x00, 0x00, 0x08, 0x08, 0x04, 0x04, 0x0C, 0x0C, + 0x02, 0x02, 0x0A, 0x0A, 0x06, 0x06, 0x0E, 0x0E, + 0x10, 0x10, 0x18, 0x18, 0x14, 0x14, 0x1C, 0x1C, + 0x12, 0x12, 0x1A, 0x1A, 0x16, 0x16, 0x1E, 0x1E, + 0x20, 0x20, 0x28, 0x28, 0x24, 0x24, 0x2C, 0x2C, + 0x22, 0x22, 0x2A, 0x2A, 0x26, 0x26, 0x2E, 0x2E, + 0x30, 0x30, 0x38, 0x38, 0x34, 0x34, 0x3C, 0x3C, + 0x32, 0x32, 0x3A, 0x3A, 0x36, 0x36, 0x3E, 0x3E, + 0x40, 0x40, 0x48, 0x48, 0x44, 0x44, 0x4C, 0x4C, + 0x42, 0x42, 0x4A, 0x4A, 0x46, 0x46, 0x4E, 0x4E, + 0x50, 0x50, 0x58, 0x58, 0x54, 0x54, 0x5C, 0x5C, + 0x52, 0x52, 0x5A, 0x5A, 0x56, 0x56, 0x5E, 0x5E, + 0x60, 0x60, 0x68, 0x68, 0x64, 0x64, 0x6C, 0x6C, + 0x62, 0x62, 0x6A, 0x6A, 0x66, 0x66, 0x6E, 0x6E, + 0x70, 0x70, 0x78, 0x78, 0x74, 0x74, 0x7C, 0x7C, + 0x72, 0x72, 0x7A, 0x7A, 0x76, 0x76, 0x7E, 0x7E, + 0x80, 0x80, 0x88, 0x88, 0x84, 0x84, 0x8C, 0x8C, + 0x82, 0x82, 0x8A, 0x8A, 0x86, 0x86, 0x8E, 0x8E, + 0x90, 0x90, 0x98, 0x98, 0x94, 0x94, 0x9C, 0x9C, + 0x92, 0x92, 0x9A, 0x9A, 0x96, 0x96, 0x9E, 0x9E, + 0xA0, 0xA0, 0xA8, 0xA8, 0xA4, 0xA4, 0xAC, 0xAC, + 0xA2, 0xA2, 0xAA, 0xAA, 0xA6, 0xA6, 0xAE, 0xAE, + 0xB0, 0xB0, 0xB8, 0xB8, 0xB4, 0xB4, 0xBC, 0xBC, + 0xB2, 0xB2, 0xBA, 0xBA, 0xB6, 0xB6, 0xBE, 0xBE, + 0xC0, 0xC0, 0xC8, 0xC8, 0xC4, 0xC4, 0xCC, 0xCC, + 0xC2, 0xC2, 0xCA, 0xCA, 0xC6, 0xC6, 0xCE, 0xCE, + 0xD0, 0xD0, 0xD8, 0xD8, 0xD4, 0xD4, 0xDC, 0xDC, + 0xD2, 0xD2, 0xDA, 0xDA, 0xD6, 0xD6, 0xDE, 0xDE, + 0xE0, 0xE0, 0xE8, 0xE8, 0xE4, 0xE4, 0xEC, 0xEC, + 0xE2, 0xE2, 0xEA, 0xEA, 0xE6, 0xE6, 0xEE, 0xEE, + 0xF0, 0xF0, 0xF8, 0xF8, 0xF4, 0xF4, 0xFC, 0xFC, + 0xF2, 0xF2, 0xFA, 0xFA, 0xF6, 0xF6, 0xFE, 0xFE + ); + + // Mapping tables for the PC-2 transformation. + static $pc2mapc1 = array( + 0x00000000, 0x00000400, 0x00200000, 0x00200400, + 0x00000001, 0x00000401, 0x00200001, 0x00200401, + 0x02000000, 0x02000400, 0x02200000, 0x02200400, + 0x02000001, 0x02000401, 0x02200001, 0x02200401 + ); + static $pc2mapc2 = array( + 0x00000000, 0x00000800, 0x08000000, 0x08000800, + 0x00010000, 0x00010800, 0x08010000, 0x08010800, + 0x00000000, 0x00000800, 0x08000000, 0x08000800, + 0x00010000, 0x00010800, 0x08010000, 0x08010800, + 0x00000100, 0x00000900, 0x08000100, 0x08000900, + 0x00010100, 0x00010900, 0x08010100, 0x08010900, + 0x00000100, 0x00000900, 0x08000100, 0x08000900, + 0x00010100, 0x00010900, 0x08010100, 0x08010900, + 0x00000010, 0x00000810, 0x08000010, 0x08000810, + 0x00010010, 0x00010810, 0x08010010, 0x08010810, + 0x00000010, 0x00000810, 0x08000010, 0x08000810, + 0x00010010, 0x00010810, 0x08010010, 0x08010810, + 0x00000110, 0x00000910, 0x08000110, 0x08000910, + 0x00010110, 0x00010910, 0x08010110, 0x08010910, + 0x00000110, 0x00000910, 0x08000110, 0x08000910, + 0x00010110, 0x00010910, 0x08010110, 0x08010910, + 0x00040000, 0x00040800, 0x08040000, 0x08040800, + 0x00050000, 0x00050800, 0x08050000, 0x08050800, + 0x00040000, 0x00040800, 0x08040000, 0x08040800, + 0x00050000, 0x00050800, 0x08050000, 0x08050800, + 0x00040100, 0x00040900, 0x08040100, 0x08040900, + 0x00050100, 0x00050900, 0x08050100, 0x08050900, + 0x00040100, 0x00040900, 0x08040100, 0x08040900, + 0x00050100, 0x00050900, 0x08050100, 0x08050900, + 0x00040010, 0x00040810, 0x08040010, 0x08040810, + 0x00050010, 0x00050810, 0x08050010, 0x08050810, + 0x00040010, 0x00040810, 0x08040010, 0x08040810, + 0x00050010, 0x00050810, 0x08050010, 0x08050810, + 0x00040110, 0x00040910, 0x08040110, 0x08040910, + 0x00050110, 0x00050910, 0x08050110, 0x08050910, + 0x00040110, 0x00040910, 0x08040110, 0x08040910, + 0x00050110, 0x00050910, 0x08050110, 0x08050910, + 0x01000000, 0x01000800, 0x09000000, 0x09000800, + 0x01010000, 0x01010800, 0x09010000, 0x09010800, + 0x01000000, 0x01000800, 0x09000000, 0x09000800, + 0x01010000, 0x01010800, 0x09010000, 0x09010800, + 0x01000100, 0x01000900, 0x09000100, 0x09000900, + 0x01010100, 0x01010900, 0x09010100, 0x09010900, + 0x01000100, 0x01000900, 0x09000100, 0x09000900, + 0x01010100, 0x01010900, 0x09010100, 0x09010900, + 0x01000010, 0x01000810, 0x09000010, 0x09000810, + 0x01010010, 0x01010810, 0x09010010, 0x09010810, + 0x01000010, 0x01000810, 0x09000010, 0x09000810, + 0x01010010, 0x01010810, 0x09010010, 0x09010810, + 0x01000110, 0x01000910, 0x09000110, 0x09000910, + 0x01010110, 0x01010910, 0x09010110, 0x09010910, + 0x01000110, 0x01000910, 0x09000110, 0x09000910, + 0x01010110, 0x01010910, 0x09010110, 0x09010910, + 0x01040000, 0x01040800, 0x09040000, 0x09040800, + 0x01050000, 0x01050800, 0x09050000, 0x09050800, + 0x01040000, 0x01040800, 0x09040000, 0x09040800, + 0x01050000, 0x01050800, 0x09050000, 0x09050800, + 0x01040100, 0x01040900, 0x09040100, 0x09040900, + 0x01050100, 0x01050900, 0x09050100, 0x09050900, + 0x01040100, 0x01040900, 0x09040100, 0x09040900, + 0x01050100, 0x01050900, 0x09050100, 0x09050900, + 0x01040010, 0x01040810, 0x09040010, 0x09040810, + 0x01050010, 0x01050810, 0x09050010, 0x09050810, + 0x01040010, 0x01040810, 0x09040010, 0x09040810, + 0x01050010, 0x01050810, 0x09050010, 0x09050810, + 0x01040110, 0x01040910, 0x09040110, 0x09040910, + 0x01050110, 0x01050910, 0x09050110, 0x09050910, + 0x01040110, 0x01040910, 0x09040110, 0x09040910, + 0x01050110, 0x01050910, 0x09050110, 0x09050910 + ); + static $pc2mapc3 = array( + 0x00000000, 0x00000004, 0x00001000, 0x00001004, + 0x00000000, 0x00000004, 0x00001000, 0x00001004, + 0x10000000, 0x10000004, 0x10001000, 0x10001004, + 0x10000000, 0x10000004, 0x10001000, 0x10001004, + 0x00000020, 0x00000024, 0x00001020, 0x00001024, + 0x00000020, 0x00000024, 0x00001020, 0x00001024, + 0x10000020, 0x10000024, 0x10001020, 0x10001024, + 0x10000020, 0x10000024, 0x10001020, 0x10001024, + 0x00080000, 0x00080004, 0x00081000, 0x00081004, + 0x00080000, 0x00080004, 0x00081000, 0x00081004, + 0x10080000, 0x10080004, 0x10081000, 0x10081004, + 0x10080000, 0x10080004, 0x10081000, 0x10081004, + 0x00080020, 0x00080024, 0x00081020, 0x00081024, + 0x00080020, 0x00080024, 0x00081020, 0x00081024, + 0x10080020, 0x10080024, 0x10081020, 0x10081024, + 0x10080020, 0x10080024, 0x10081020, 0x10081024, + 0x20000000, 0x20000004, 0x20001000, 0x20001004, + 0x20000000, 0x20000004, 0x20001000, 0x20001004, + 0x30000000, 0x30000004, 0x30001000, 0x30001004, + 0x30000000, 0x30000004, 0x30001000, 0x30001004, + 0x20000020, 0x20000024, 0x20001020, 0x20001024, + 0x20000020, 0x20000024, 0x20001020, 0x20001024, + 0x30000020, 0x30000024, 0x30001020, 0x30001024, + 0x30000020, 0x30000024, 0x30001020, 0x30001024, + 0x20080000, 0x20080004, 0x20081000, 0x20081004, + 0x20080000, 0x20080004, 0x20081000, 0x20081004, + 0x30080000, 0x30080004, 0x30081000, 0x30081004, + 0x30080000, 0x30080004, 0x30081000, 0x30081004, + 0x20080020, 0x20080024, 0x20081020, 0x20081024, + 0x20080020, 0x20080024, 0x20081020, 0x20081024, + 0x30080020, 0x30080024, 0x30081020, 0x30081024, + 0x30080020, 0x30080024, 0x30081020, 0x30081024, + 0x00000002, 0x00000006, 0x00001002, 0x00001006, + 0x00000002, 0x00000006, 0x00001002, 0x00001006, + 0x10000002, 0x10000006, 0x10001002, 0x10001006, + 0x10000002, 0x10000006, 0x10001002, 0x10001006, + 0x00000022, 0x00000026, 0x00001022, 0x00001026, + 0x00000022, 0x00000026, 0x00001022, 0x00001026, + 0x10000022, 0x10000026, 0x10001022, 0x10001026, + 0x10000022, 0x10000026, 0x10001022, 0x10001026, + 0x00080002, 0x00080006, 0x00081002, 0x00081006, + 0x00080002, 0x00080006, 0x00081002, 0x00081006, + 0x10080002, 0x10080006, 0x10081002, 0x10081006, + 0x10080002, 0x10080006, 0x10081002, 0x10081006, + 0x00080022, 0x00080026, 0x00081022, 0x00081026, + 0x00080022, 0x00080026, 0x00081022, 0x00081026, + 0x10080022, 0x10080026, 0x10081022, 0x10081026, + 0x10080022, 0x10080026, 0x10081022, 0x10081026, + 0x20000002, 0x20000006, 0x20001002, 0x20001006, + 0x20000002, 0x20000006, 0x20001002, 0x20001006, + 0x30000002, 0x30000006, 0x30001002, 0x30001006, + 0x30000002, 0x30000006, 0x30001002, 0x30001006, + 0x20000022, 0x20000026, 0x20001022, 0x20001026, + 0x20000022, 0x20000026, 0x20001022, 0x20001026, + 0x30000022, 0x30000026, 0x30001022, 0x30001026, + 0x30000022, 0x30000026, 0x30001022, 0x30001026, + 0x20080002, 0x20080006, 0x20081002, 0x20081006, + 0x20080002, 0x20080006, 0x20081002, 0x20081006, + 0x30080002, 0x30080006, 0x30081002, 0x30081006, + 0x30080002, 0x30080006, 0x30081002, 0x30081006, + 0x20080022, 0x20080026, 0x20081022, 0x20081026, + 0x20080022, 0x20080026, 0x20081022, 0x20081026, + 0x30080022, 0x30080026, 0x30081022, 0x30081026, + 0x30080022, 0x30080026, 0x30081022, 0x30081026 + ); + static $pc2mapc4 = array( + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208 + ); + static $pc2mapd1 = array( + 0x00000000, 0x00000001, 0x08000000, 0x08000001, + 0x00200000, 0x00200001, 0x08200000, 0x08200001, + 0x00000002, 0x00000003, 0x08000002, 0x08000003, + 0x00200002, 0x00200003, 0x08200002, 0x08200003 + ); + static $pc2mapd2 = array( + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04 + ); + static $pc2mapd3 = array( + 0x00000000, 0x00010000, 0x02000000, 0x02010000, + 0x00000020, 0x00010020, 0x02000020, 0x02010020, + 0x00040000, 0x00050000, 0x02040000, 0x02050000, + 0x00040020, 0x00050020, 0x02040020, 0x02050020, + 0x00002000, 0x00012000, 0x02002000, 0x02012000, + 0x00002020, 0x00012020, 0x02002020, 0x02012020, + 0x00042000, 0x00052000, 0x02042000, 0x02052000, + 0x00042020, 0x00052020, 0x02042020, 0x02052020, + 0x00000000, 0x00010000, 0x02000000, 0x02010000, + 0x00000020, 0x00010020, 0x02000020, 0x02010020, + 0x00040000, 0x00050000, 0x02040000, 0x02050000, + 0x00040020, 0x00050020, 0x02040020, 0x02050020, + 0x00002000, 0x00012000, 0x02002000, 0x02012000, + 0x00002020, 0x00012020, 0x02002020, 0x02012020, + 0x00042000, 0x00052000, 0x02042000, 0x02052000, + 0x00042020, 0x00052020, 0x02042020, 0x02052020, + 0x00000010, 0x00010010, 0x02000010, 0x02010010, + 0x00000030, 0x00010030, 0x02000030, 0x02010030, + 0x00040010, 0x00050010, 0x02040010, 0x02050010, + 0x00040030, 0x00050030, 0x02040030, 0x02050030, + 0x00002010, 0x00012010, 0x02002010, 0x02012010, + 0x00002030, 0x00012030, 0x02002030, 0x02012030, + 0x00042010, 0x00052010, 0x02042010, 0x02052010, + 0x00042030, 0x00052030, 0x02042030, 0x02052030, + 0x00000010, 0x00010010, 0x02000010, 0x02010010, + 0x00000030, 0x00010030, 0x02000030, 0x02010030, + 0x00040010, 0x00050010, 0x02040010, 0x02050010, + 0x00040030, 0x00050030, 0x02040030, 0x02050030, + 0x00002010, 0x00012010, 0x02002010, 0x02012010, + 0x00002030, 0x00012030, 0x02002030, 0x02012030, + 0x00042010, 0x00052010, 0x02042010, 0x02052010, + 0x00042030, 0x00052030, 0x02042030, 0x02052030, + 0x20000000, 0x20010000, 0x22000000, 0x22010000, + 0x20000020, 0x20010020, 0x22000020, 0x22010020, + 0x20040000, 0x20050000, 0x22040000, 0x22050000, + 0x20040020, 0x20050020, 0x22040020, 0x22050020, + 0x20002000, 0x20012000, 0x22002000, 0x22012000, + 0x20002020, 0x20012020, 0x22002020, 0x22012020, + 0x20042000, 0x20052000, 0x22042000, 0x22052000, + 0x20042020, 0x20052020, 0x22042020, 0x22052020, + 0x20000000, 0x20010000, 0x22000000, 0x22010000, + 0x20000020, 0x20010020, 0x22000020, 0x22010020, + 0x20040000, 0x20050000, 0x22040000, 0x22050000, + 0x20040020, 0x20050020, 0x22040020, 0x22050020, + 0x20002000, 0x20012000, 0x22002000, 0x22012000, + 0x20002020, 0x20012020, 0x22002020, 0x22012020, + 0x20042000, 0x20052000, 0x22042000, 0x22052000, + 0x20042020, 0x20052020, 0x22042020, 0x22052020, + 0x20000010, 0x20010010, 0x22000010, 0x22010010, + 0x20000030, 0x20010030, 0x22000030, 0x22010030, + 0x20040010, 0x20050010, 0x22040010, 0x22050010, + 0x20040030, 0x20050030, 0x22040030, 0x22050030, + 0x20002010, 0x20012010, 0x22002010, 0x22012010, + 0x20002030, 0x20012030, 0x22002030, 0x22012030, + 0x20042010, 0x20052010, 0x22042010, 0x22052010, + 0x20042030, 0x20052030, 0x22042030, 0x22052030, + 0x20000010, 0x20010010, 0x22000010, 0x22010010, + 0x20000030, 0x20010030, 0x22000030, 0x22010030, + 0x20040010, 0x20050010, 0x22040010, 0x22050010, + 0x20040030, 0x20050030, 0x22040030, 0x22050030, + 0x20002010, 0x20012010, 0x22002010, 0x22012010, + 0x20002030, 0x20012030, 0x22002030, 0x22012030, + 0x20042010, 0x20052010, 0x22042010, 0x22052010, + 0x20042030, 0x20052030, 0x22042030, 0x22052030 + ); + static $pc2mapd4 = array( + 0x00000000, 0x00000400, 0x01000000, 0x01000400, + 0x00000000, 0x00000400, 0x01000000, 0x01000400, + 0x00000100, 0x00000500, 0x01000100, 0x01000500, + 0x00000100, 0x00000500, 0x01000100, 0x01000500, + 0x10000000, 0x10000400, 0x11000000, 0x11000400, + 0x10000000, 0x10000400, 0x11000000, 0x11000400, + 0x10000100, 0x10000500, 0x11000100, 0x11000500, + 0x10000100, 0x10000500, 0x11000100, 0x11000500, + 0x00080000, 0x00080400, 0x01080000, 0x01080400, + 0x00080000, 0x00080400, 0x01080000, 0x01080400, + 0x00080100, 0x00080500, 0x01080100, 0x01080500, + 0x00080100, 0x00080500, 0x01080100, 0x01080500, + 0x10080000, 0x10080400, 0x11080000, 0x11080400, + 0x10080000, 0x10080400, 0x11080000, 0x11080400, + 0x10080100, 0x10080500, 0x11080100, 0x11080500, + 0x10080100, 0x10080500, 0x11080100, 0x11080500, + 0x00000008, 0x00000408, 0x01000008, 0x01000408, + 0x00000008, 0x00000408, 0x01000008, 0x01000408, + 0x00000108, 0x00000508, 0x01000108, 0x01000508, + 0x00000108, 0x00000508, 0x01000108, 0x01000508, + 0x10000008, 0x10000408, 0x11000008, 0x11000408, + 0x10000008, 0x10000408, 0x11000008, 0x11000408, + 0x10000108, 0x10000508, 0x11000108, 0x11000508, + 0x10000108, 0x10000508, 0x11000108, 0x11000508, + 0x00080008, 0x00080408, 0x01080008, 0x01080408, + 0x00080008, 0x00080408, 0x01080008, 0x01080408, + 0x00080108, 0x00080508, 0x01080108, 0x01080508, + 0x00080108, 0x00080508, 0x01080108, 0x01080508, + 0x10080008, 0x10080408, 0x11080008, 0x11080408, + 0x10080008, 0x10080408, 0x11080008, 0x11080408, + 0x10080108, 0x10080508, 0x11080108, 0x11080508, + 0x10080108, 0x10080508, 0x11080108, 0x11080508, + 0x00001000, 0x00001400, 0x01001000, 0x01001400, + 0x00001000, 0x00001400, 0x01001000, 0x01001400, + 0x00001100, 0x00001500, 0x01001100, 0x01001500, + 0x00001100, 0x00001500, 0x01001100, 0x01001500, + 0x10001000, 0x10001400, 0x11001000, 0x11001400, + 0x10001000, 0x10001400, 0x11001000, 0x11001400, + 0x10001100, 0x10001500, 0x11001100, 0x11001500, + 0x10001100, 0x10001500, 0x11001100, 0x11001500, + 0x00081000, 0x00081400, 0x01081000, 0x01081400, + 0x00081000, 0x00081400, 0x01081000, 0x01081400, + 0x00081100, 0x00081500, 0x01081100, 0x01081500, + 0x00081100, 0x00081500, 0x01081100, 0x01081500, + 0x10081000, 0x10081400, 0x11081000, 0x11081400, + 0x10081000, 0x10081400, 0x11081000, 0x11081400, + 0x10081100, 0x10081500, 0x11081100, 0x11081500, + 0x10081100, 0x10081500, 0x11081100, 0x11081500, + 0x00001008, 0x00001408, 0x01001008, 0x01001408, + 0x00001008, 0x00001408, 0x01001008, 0x01001408, + 0x00001108, 0x00001508, 0x01001108, 0x01001508, + 0x00001108, 0x00001508, 0x01001108, 0x01001508, + 0x10001008, 0x10001408, 0x11001008, 0x11001408, + 0x10001008, 0x10001408, 0x11001008, 0x11001408, + 0x10001108, 0x10001508, 0x11001108, 0x11001508, + 0x10001108, 0x10001508, 0x11001108, 0x11001508, + 0x00081008, 0x00081408, 0x01081008, 0x01081408, + 0x00081008, 0x00081408, 0x01081008, 0x01081408, + 0x00081108, 0x00081508, 0x01081108, 0x01081508, + 0x00081108, 0x00081508, 0x01081108, 0x01081508, + 0x10081008, 0x10081408, 0x11081008, 0x11081408, + 0x10081008, 0x10081408, 0x11081008, 0x11081408, + 0x10081108, 0x10081508, 0x11081108, 0x11081508, + 0x10081108, 0x10081508, 0x11081108, 0x11081508 + ); + + $keys = array(); + for ($des_round = 0; $des_round < $this->des_rounds; ++$des_round) { + // pad the key and remove extra characters as appropriate. + $key = str_pad(substr($this->key, $des_round * 8, 8), 8, "\0"); + + // Perform the PC/1 transformation and compute C and D. + $t = unpack('Nl/Nr', $key); + list($l, $r) = array($t['l'], $t['r']); + $key = ($this->shuffle[$pc1map[ $r & 0xFF]] & "\x80\x80\x80\x80\x80\x80\x80\x00") | + ($this->shuffle[$pc1map[($r >> 8) & 0xFF]] & "\x40\x40\x40\x40\x40\x40\x40\x00") | + ($this->shuffle[$pc1map[($r >> 16) & 0xFF]] & "\x20\x20\x20\x20\x20\x20\x20\x00") | + ($this->shuffle[$pc1map[($r >> 24) & 0xFF]] & "\x10\x10\x10\x10\x10\x10\x10\x00") | + ($this->shuffle[$pc1map[ $l & 0xFF]] & "\x08\x08\x08\x08\x08\x08\x08\x00") | + ($this->shuffle[$pc1map[($l >> 8) & 0xFF]] & "\x04\x04\x04\x04\x04\x04\x04\x00") | + ($this->shuffle[$pc1map[($l >> 16) & 0xFF]] & "\x02\x02\x02\x02\x02\x02\x02\x00") | + ($this->shuffle[$pc1map[($l >> 24) & 0xFF]] & "\x01\x01\x01\x01\x01\x01\x01\x00"); + $key = unpack('Nc/Nd', $key); + $c = ( $key['c'] >> 4) & 0x0FFFFFFF; + $d = (($key['d'] >> 4) & 0x0FFFFFF0) | ($key['c'] & 0x0F); + + $keys[$des_round] = array( + CRYPT_DES_ENCRYPT => array(), + CRYPT_DES_DECRYPT => array_fill(0, 32, 0) + ); + for ($i = 0, $ki = 31; $i < 16; ++$i, $ki-= 2) { + $c <<= $shifts[$i]; + $c = ($c | ($c >> 28)) & 0x0FFFFFFF; + $d <<= $shifts[$i]; + $d = ($d | ($d >> 28)) & 0x0FFFFFFF; + + // Perform the PC-2 transformation. + $cp = $pc2mapc1[ $c >> 24 ] | $pc2mapc2[($c >> 16) & 0xFF] | + $pc2mapc3[($c >> 8) & 0xFF] | $pc2mapc4[ $c & 0xFF]; + $dp = $pc2mapd1[ $d >> 24 ] | $pc2mapd2[($d >> 16) & 0xFF] | + $pc2mapd3[($d >> 8) & 0xFF] | $pc2mapd4[ $d & 0xFF]; + + // Reorder: odd bytes/even bytes. Push the result in key schedule. + $val1 = ( $cp & 0xFF000000) | (($cp << 8) & 0x00FF0000) | + (($dp >> 16) & 0x0000FF00) | (($dp >> 8) & 0x000000FF); + $val2 = (($cp << 8) & 0xFF000000) | (($cp << 16) & 0x00FF0000) | + (($dp >> 8) & 0x0000FF00) | ( $dp & 0x000000FF); + $keys[$des_round][CRYPT_DES_ENCRYPT][ ] = $val1; + $keys[$des_round][CRYPT_DES_DECRYPT][$ki - 1] = $val1; + $keys[$des_round][CRYPT_DES_ENCRYPT][ ] = $val2; + $keys[$des_round][CRYPT_DES_DECRYPT][$ki ] = $val2; + } + } + + switch ($this->des_rounds) { + case 3: // 3DES keys + $this->keys = array( + CRYPT_DES_ENCRYPT => array_merge( + $keys[0][CRYPT_DES_ENCRYPT], + $keys[1][CRYPT_DES_DECRYPT], + $keys[2][CRYPT_DES_ENCRYPT] + ), + CRYPT_DES_DECRYPT => array_merge( + $keys[2][CRYPT_DES_DECRYPT], + $keys[1][CRYPT_DES_ENCRYPT], + $keys[0][CRYPT_DES_DECRYPT] + ) + ); + break; + // case 1: // DES keys + default: + $this->keys = array( + CRYPT_DES_ENCRYPT => $keys[0][CRYPT_DES_ENCRYPT], + CRYPT_DES_DECRYPT => $keys[0][CRYPT_DES_DECRYPT] + ); + } + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions =& Crypt_DES::_getLambdaFunctions(); + + // Engine configuration for: + // - DES ($des_rounds == 1) or + // - 3DES ($des_rounds == 3) + $des_rounds = $this->des_rounds; + + // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. + // (Currently, for Crypt_DES, one generated $lambda_function cost on php5.5@32bit ~135kb unfreeable mem and ~230kb on php5.5@64bit) + // (Currently, for Crypt_TripleDES, one generated $lambda_function cost on php5.5@32bit ~240kb unfreeable mem and ~340kb on php5.5@64bit) + // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one + $gen_hi_opt_code = (bool)( count($lambda_functions) < 10 ); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_DES, $des_rounds, {$this->mode}"; + if ($gen_hi_opt_code) { + // For hi-optimized code, we create for each combination of + // $mode, $des_rounds and $this->key its own encrypt/decrypt function. + // After max 10 hi-optimized functions, we create generic + // (still very fast.. but not ultra) functions for each $mode/$des_rounds + // Currently 2 * 5 generic functions will be then max. possible. + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + // Is there a re-usable $lambda_functions in there? If not, we have to create it. + if (!isset($lambda_functions[$code_hash])) { + // Init code for both, encrypt and decrypt. + $init_crypt = 'static $sbox1, $sbox2, $sbox3, $sbox4, $sbox5, $sbox6, $sbox7, $sbox8, $shuffleip, $shuffleinvip; + if (!$sbox1) { + $sbox1 = array_map("intval", $self->sbox1); + $sbox2 = array_map("intval", $self->sbox2); + $sbox3 = array_map("intval", $self->sbox3); + $sbox4 = array_map("intval", $self->sbox4); + $sbox5 = array_map("intval", $self->sbox5); + $sbox6 = array_map("intval", $self->sbox6); + $sbox7 = array_map("intval", $self->sbox7); + $sbox8 = array_map("intval", $self->sbox8);' + /* Merge $shuffle with $[inv]ipmap */ . ' + for ($i = 0; $i < 256; ++$i) { + $shuffleip[] = $self->shuffle[$self->ipmap[$i]]; + $shuffleinvip[] = $self->shuffle[$self->invipmap[$i]]; + } + } + '; + + switch (true) { + case $gen_hi_opt_code: + // In Hi-optimized code mode, we use our [3]DES key schedule as hardcoded integers. + // No futher initialisation of the $keys schedule is necessary. + // That is the extra performance boost. + $k = array( + CRYPT_DES_ENCRYPT => $this->keys[CRYPT_DES_ENCRYPT], + CRYPT_DES_DECRYPT => $this->keys[CRYPT_DES_DECRYPT] + ); + $init_encrypt = ''; + $init_decrypt = ''; + break; + default: + // In generic optimized code mode, we have to use, as the best compromise [currently], + // our key schedule as $ke/$kd arrays. (with hardcoded indexes...) + $k = array( + CRYPT_DES_ENCRYPT => array(), + CRYPT_DES_DECRYPT => array() + ); + for ($i = 0, $c = count($this->keys[CRYPT_DES_ENCRYPT]); $i < $c; ++$i) { + $k[CRYPT_DES_ENCRYPT][$i] = '$ke[' . $i . ']'; + $k[CRYPT_DES_DECRYPT][$i] = '$kd[' . $i . ']'; + } + $init_encrypt = '$ke = $self->keys[CRYPT_DES_ENCRYPT];'; + $init_decrypt = '$kd = $self->keys[CRYPT_DES_DECRYPT];'; + break; + } + + // Creating code for en- and decryption. + $crypt_block = array(); + foreach (array(CRYPT_DES_ENCRYPT, CRYPT_DES_DECRYPT) as $c) { + /* Do the initial IP permutation. */ + $crypt_block[$c] = ' + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + $in = unpack("N*", + ($shuffleip[ $r & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleip[($r >> 8) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleip[($r >> 24) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleip[ $l & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleip[($l >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleip[($l >> 16) & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleip[($l >> 24) & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01") + ); + ' . /* Extract L0 and R0 */ ' + $l = $in[1]; + $r = $in[2]; + '; + + $l = '$l'; + $r = '$r'; + + // Perform DES or 3DES. + for ($ki = -1, $des_round = 0; $des_round < $des_rounds; ++$des_round) { + // Perform the 16 steps. + for ($i = 0; $i < 16; ++$i) { + // start of "the Feistel (F) function" - see the following URL: + // http://en.wikipedia.org/wiki/Image:Data_Encryption_Standard_InfoBox_Diagram.png + // Merge key schedule. + $crypt_block[$c].= ' + $b1 = ((' . $r . ' >> 3) & 0x1FFFFFFF) ^ (' . $r . ' << 29) ^ ' . $k[$c][++$ki] . '; + $b2 = ((' . $r . ' >> 31) & 0x00000001) ^ (' . $r . ' << 1) ^ ' . $k[$c][++$ki] . ';' . + /* S-box indexing. */ + $l . ' = $sbox1[($b1 >> 24) & 0x3F] ^ $sbox2[($b2 >> 24) & 0x3F] ^ + $sbox3[($b1 >> 16) & 0x3F] ^ $sbox4[($b2 >> 16) & 0x3F] ^ + $sbox5[($b1 >> 8) & 0x3F] ^ $sbox6[($b2 >> 8) & 0x3F] ^ + $sbox7[ $b1 & 0x3F] ^ $sbox8[ $b2 & 0x3F] ^ ' . $l . '; + '; + // end of "the Feistel (F) function" + + // swap L & R + list($l, $r) = array($r, $l); + } + list($l, $r) = array($r, $l); + } + + // Perform the inverse IP permutation. + $crypt_block[$c].= '$in = + ($shuffleinvip[($l >> 24) & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleinvip[($r >> 24) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleinvip[($l >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleinvip[($r >> 16) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleinvip[($l >> 8) & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleinvip[($r >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleinvip[ $l & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleinvip[ $r & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); + '; + } + + // Creates the inline-crypt function + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'init_encrypt' => $init_encrypt, + 'init_decrypt' => $init_decrypt, + 'encrypt_block' => $crypt_block[CRYPT_DES_ENCRYPT], + 'decrypt_block' => $crypt_block[CRYPT_DES_DECRYPT] + ) + ); + } + + // Set the inline-crypt function as callback in: $this->inline_crypt + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/Hash.php b/app/Http/Controllers/dgaAdmin/Crypt/Hash.php new file mode 100644 index 0000000..ff6037c --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/Hash.php @@ -0,0 +1,928 @@ + + * setKey('abcdefg'); + * + * echo base64_encode($hash->hash('abcdefg')); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Hash + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access private + * @see self::Crypt_Hash() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_HASH_MODE_INTERNAL', 1); +/** + * Toggles the mhash() implementation, which has been deprecated on PHP 5.3.0+. + */ +define('CRYPT_HASH_MODE_MHASH', 2); +/** + * Toggles the hash() implementation, which works on PHP 5.1.2+. + */ +define('CRYPT_HASH_MODE_HASH', 3); +/**#@-*/ + +/** + * Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions. + * + * @package Crypt_Hash + * @author Jim Wigginton + * @access public + */ +class Crypt_Hash +{ + /** + * Hash Parameter + * + * @see self::setHash() + * @var int + * @access private + */ + var $hashParam; + + /** + * Byte-length of compression blocks / key (Internal HMAC) + * + * @see self::setAlgorithm() + * @var int + * @access private + */ + var $b; + + /** + * Byte-length of hash output (Internal HMAC) + * + * @see self::setHash() + * @var int + * @access private + */ + var $l = false; + + /** + * Hash Algorithm + * + * @see self::setHash() + * @var string + * @access private + */ + var $hash; + + /** + * Key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key = false; + + /** + * Computed Key + * + * @see self::_computeKey() + * @var string + * @access private + */ + var $computedKey = false; + + /** + * Outer XOR (Internal HMAC) + * + * @see self::setKey() + * @var string + * @access private + */ + var $opad; + + /** + * Inner XOR (Internal HMAC) + * + * @see self::setKey() + * @var string + * @access private + */ + var $ipad; + + /** + * Engine + * + * @see self::setHash() + * @var string + * @access private + */ + var $engine; + + /** + * Default Constructor. + * + * @param string $hash + * @return Crypt_Hash + * @access public + */ + function __construct($hash = 'sha1') + { + if (!defined('CRYPT_HASH_MODE')) { + switch (true) { + case extension_loaded('hash'): + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_HASH); + break; + case extension_loaded('mhash'): + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_MHASH); + break; + default: + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL); + } + } + + $this->setHash($hash); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param string $hash + * @access public + */ + function Crypt_Hash($hash = 'sha1') + { + $this->__construct($hash); + } + + /** + * Sets the key for HMACs + * + * Keys can be of any length. + * + * @access public + * @param string $key + */ + function setKey($key = false) + { + $this->key = $key; + $this->_computeKey(); + } + + /** + * Pre-compute the key used by the HMAC + * + * Quoting http://tools.ietf.org/html/rfc2104#section-2, "Applications that use keys longer than B bytes + * will first hash the key using H and then use the resultant L byte string as the actual key to HMAC." + * + * As documented in https://www.reddit.com/r/PHP/comments/9nct2l/symfonypolyfill_hash_pbkdf2_correct_fix_for/ + * when doing an HMAC multiple times it's faster to compute the hash once instead of computing it during + * every call + * + * @access private + */ + function _computeKey() + { + if ($this->key === false) { + $this->computedKey = false; + return; + } + + if (strlen($this->key) <= $this->b) { + $this->computedKey = $this->key; + return; + } + + switch ($this->engine) { + case CRYPT_HASH_MODE_MHASH: + $this->computedKey = mhash($this->hash, $this->key); + break; + case CRYPT_HASH_MODE_HASH: + $this->computedKey = hash($this->hash, $this->key, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + $this->computedKey = call_user_func($this->hash, $this->key); + } + } + + /** + * Gets the hash function. + * + * As set by the constructor or by the setHash() method. + * + * @access public + * @return string + */ + function getHash() + { + return $this->hashParam; + } + + /** + * Sets the hash function. + * + * @access public + * @param string $hash + */ + function setHash($hash) + { + $this->hashParam = $hash = strtolower($hash); + switch ($hash) { + case 'md5-96': + case 'sha1-96': + case 'sha256-96': + case 'sha512-96': + $hash = substr($hash, 0, -3); + $this->l = 12; // 96 / 8 = 12 + break; + case 'md2': + case 'md5': + $this->l = 16; + break; + case 'sha1': + $this->l = 20; + break; + case 'sha256': + $this->l = 32; + break; + case 'sha384': + $this->l = 48; + break; + case 'sha512': + $this->l = 64; + } + + switch ($hash) { + case 'md2-96': + case 'md2': + $this->b = 16; + case 'md5-96': + case 'sha1-96': + case 'sha224-96': + case 'sha256-96': + case 'md2': + case 'md5': + case 'sha1': + case 'sha224': + case 'sha256': + $this->b = 64; + break; + default: + $this->b = 128; + } + + switch ($hash) { + case 'md2': + $this->engine = CRYPT_HASH_MODE == CRYPT_HASH_MODE_HASH && in_array('md2', hash_algos()) ? + CRYPT_HASH_MODE_HASH : CRYPT_HASH_MODE_INTERNAL; + break; + case 'sha384': + case 'sha512': + $this->engine = CRYPT_HASH_MODE == CRYPT_HASH_MODE_MHASH ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE; + break; + default: + $this->engine = CRYPT_HASH_MODE; + } + + switch ($this->engine) { + case CRYPT_HASH_MODE_MHASH: + switch ($hash) { + case 'md5': + $this->hash = MHASH_MD5; + break; + case 'sha256': + $this->hash = MHASH_SHA256; + break; + case 'sha1': + default: + $this->hash = MHASH_SHA1; + } + $this->_computeKey(); + return; + case CRYPT_HASH_MODE_HASH: + switch ($hash) { + case 'md5': + $this->hash = 'md5'; + return; + case 'md2': + case 'sha256': + case 'sha384': + case 'sha512': + $this->hash = $hash; + return; + case 'sha1': + default: + $this->hash = 'sha1'; + } + $this->_computeKey(); + return; + } + + switch ($hash) { + case 'md2': + $this->hash = array($this, '_md2'); + break; + case 'md5': + $this->hash = array($this, '_md5'); + break; + case 'sha256': + $this->hash = array($this, '_sha256'); + break; + case 'sha384': + case 'sha512': + $this->hash = array($this, '_sha512'); + break; + case 'sha1': + default: + $this->hash = array($this, '_sha1'); + } + + $this->ipad = str_repeat(chr(0x36), $this->b); + $this->opad = str_repeat(chr(0x5C), $this->b); + + $this->_computeKey(); + } + + /** + * Compute the HMAC. + * + * @access public + * @param string $text + * @return string + */ + function hash($text) + { + if (!empty($this->key) || is_string($this->key)) { + switch ($this->engine) { + case CRYPT_HASH_MODE_MHASH: + $output = mhash($this->hash, $text, $this->computedKey); + break; + case CRYPT_HASH_MODE_HASH: + $output = hash_hmac($this->hash, $text, $this->computedKey, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + $key = str_pad($this->computedKey, $this->b, chr(0)); // step 1 + $temp = $this->ipad ^ $key; // step 2 + $temp .= $text; // step 3 + $temp = call_user_func($this->hash, $temp); // step 4 + $output = $this->opad ^ $key; // step 5 + $output.= $temp; // step 6 + $output = call_user_func($this->hash, $output); // step 7 + } + } else { + switch ($this->engine) { + case CRYPT_HASH_MODE_MHASH: + $output = mhash($this->hash, $text); + break; + case CRYPT_HASH_MODE_HASH: + $output = hash($this->hash, $text, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + $output = call_user_func($this->hash, $text); + } + } + + return substr($output, 0, $this->l); + } + + /** + * Returns the hash length (in bytes) + * + * @access public + * @return int + */ + function getLength() + { + return $this->l; + } + + /** + * Wrapper for MD5 + * + * @access private + * @param string $m + */ + function _md5($m) + { + return pack('H*', md5($m)); + } + + /** + * Wrapper for SHA1 + * + * @access private + * @param string $m + */ + function _sha1($m) + { + return pack('H*', sha1($m)); + } + + /** + * Pure-PHP implementation of MD2 + * + * See {@link http://tools.ietf.org/html/rfc1319 RFC1319}. + * + * @access private + * @param string $m + */ + function _md2($m) + { + static $s = array( + 41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, + 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, + 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, + 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, + 245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, + 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, + 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165, + 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, + 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, + 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, + 96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, + 85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197, + 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65, + 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, + 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, + 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, + 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, + 31, 26, 219, 153, 141, 51, 159, 17, 131, 20 + ); + + // Step 1. Append Padding Bytes + $pad = 16 - (strlen($m) & 0xF); + $m.= str_repeat(chr($pad), $pad); + + $length = strlen($m); + + // Step 2. Append Checksum + $c = str_repeat(chr(0), 16); + $l = chr(0); + for ($i = 0; $i < $length; $i+= 16) { + for ($j = 0; $j < 16; $j++) { + // RFC1319 incorrectly states that C[j] should be set to S[c xor L] + //$c[$j] = chr($s[ord($m[$i + $j] ^ $l)]); + // per , however, C[j] should be set to S[c xor L] xor C[j] + $c[$j] = chr($s[ord($m[$i + $j] ^ $l)] ^ ord($c[$j])); + $l = $c[$j]; + } + } + $m.= $c; + + $length+= 16; + + // Step 3. Initialize MD Buffer + $x = str_repeat(chr(0), 48); + + // Step 4. Process Message in 16-Byte Blocks + for ($i = 0; $i < $length; $i+= 16) { + for ($j = 0; $j < 16; $j++) { + $x[$j + 16] = $m[$i + $j]; + $x[$j + 32] = $x[$j + 16] ^ $x[$j]; + } + $t = chr(0); + for ($j = 0; $j < 18; $j++) { + for ($k = 0; $k < 48; $k++) { + $x[$k] = $t = $x[$k] ^ chr($s[ord($t)]); + //$t = $x[$k] = $x[$k] ^ chr($s[ord($t)]); + } + $t = chr(ord($t) + $j); + } + } + + // Step 5. Output + return substr($x, 0, 16); + } + + /** + * Pure-PHP implementation of SHA256 + * + * See {@link http://en.wikipedia.org/wiki/SHA_hash_functions#SHA-256_.28a_SHA-2_variant.29_pseudocode SHA-256 (a SHA-2 variant) pseudocode - Wikipedia}. + * + * @access private + * @param string $m + */ + function _sha256($m) + { + if (extension_loaded('suhosin')) { + return pack('H*', sha256($m)); + } + + // Initialize variables + $hash = array( + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + ); + // Initialize table of round constants + // (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311) + static $k = array( + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ); + + // Pre-processing + $length = strlen($m); + // to round to nearest 56 mod 64, we'll add 64 - (length + (64 - 56)) % 64 + $m.= str_repeat(chr(0), 64 - (($length + 8) & 0x3F)); + $m[$length] = chr(0x80); + // we don't support hashing strings 512MB long + $m.= pack('N2', 0, $length << 3); + + // Process the message in successive 512-bit chunks + $chunks = str_split($m, 64); + foreach ($chunks as $chunk) { + $w = array(); + for ($i = 0; $i < 16; $i++) { + extract(unpack('Ntemp', $this->_string_shift($chunk, 4))); + $w[] = $temp; + } + + // Extend the sixteen 32-bit words into sixty-four 32-bit words + for ($i = 16; $i < 64; $i++) { + // @codingStandardsIgnoreStart + $s0 = $this->_rightRotate($w[$i - 15], 7) ^ + $this->_rightRotate($w[$i - 15], 18) ^ + $this->_rightShift( $w[$i - 15], 3); + $s1 = $this->_rightRotate($w[$i - 2], 17) ^ + $this->_rightRotate($w[$i - 2], 19) ^ + $this->_rightShift( $w[$i - 2], 10); + // @codingStandardsIgnoreEnd + $w[$i] = $this->_add($w[$i - 16], $s0, $w[$i - 7], $s1); + } + + // Initialize hash value for this chunk + list($a, $b, $c, $d, $e, $f, $g, $h) = $hash; + + // Main loop + for ($i = 0; $i < 64; $i++) { + $s0 = $this->_rightRotate($a, 2) ^ + $this->_rightRotate($a, 13) ^ + $this->_rightRotate($a, 22); + $maj = ($a & $b) ^ + ($a & $c) ^ + ($b & $c); + $t2 = $this->_add($s0, $maj); + + $s1 = $this->_rightRotate($e, 6) ^ + $this->_rightRotate($e, 11) ^ + $this->_rightRotate($e, 25); + $ch = ($e & $f) ^ + ($this->_not($e) & $g); + $t1 = $this->_add($h, $s1, $ch, $k[$i], $w[$i]); + + $h = $g; + $g = $f; + $f = $e; + $e = $this->_add($d, $t1); + $d = $c; + $c = $b; + $b = $a; + $a = $this->_add($t1, $t2); + } + + // Add this chunk's hash to result so far + $hash = array( + $this->_add($hash[0], $a), + $this->_add($hash[1], $b), + $this->_add($hash[2], $c), + $this->_add($hash[3], $d), + $this->_add($hash[4], $e), + $this->_add($hash[5], $f), + $this->_add($hash[6], $g), + $this->_add($hash[7], $h) + ); + } + + // Produce the final hash value (big-endian) + return pack('N8', $hash[0], $hash[1], $hash[2], $hash[3], $hash[4], $hash[5], $hash[6], $hash[7]); + } + + /** + * Pure-PHP implementation of SHA384 and SHA512 + * + * @access private + * @param string $m + */ + function _sha512($m) + { + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + static $init384, $init512, $k; + + if (!isset($k)) { + // Initialize variables + $init384 = array( // initial values for SHA384 + 'cbbb9d5dc1059ed8', '629a292a367cd507', '9159015a3070dd17', '152fecd8f70e5939', + '67332667ffc00b31', '8eb44a8768581511', 'db0c2e0d64f98fa7', '47b5481dbefa4fa4' + ); + $init512 = array( // initial values for SHA512 + '6a09e667f3bcc908', 'bb67ae8584caa73b', '3c6ef372fe94f82b', 'a54ff53a5f1d36f1', + '510e527fade682d1', '9b05688c2b3e6c1f', '1f83d9abfb41bd6b', '5be0cd19137e2179' + ); + + for ($i = 0; $i < 8; $i++) { + $init384[$i] = new Math_BigInteger($init384[$i], 16); + $init384[$i]->setPrecision(64); + $init512[$i] = new Math_BigInteger($init512[$i], 16); + $init512[$i]->setPrecision(64); + } + + // Initialize table of round constants + // (first 64 bits of the fractional parts of the cube roots of the first 80 primes 2..409) + $k = array( + '428a2f98d728ae22', '7137449123ef65cd', 'b5c0fbcfec4d3b2f', 'e9b5dba58189dbbc', + '3956c25bf348b538', '59f111f1b605d019', '923f82a4af194f9b', 'ab1c5ed5da6d8118', + 'd807aa98a3030242', '12835b0145706fbe', '243185be4ee4b28c', '550c7dc3d5ffb4e2', + '72be5d74f27b896f', '80deb1fe3b1696b1', '9bdc06a725c71235', 'c19bf174cf692694', + 'e49b69c19ef14ad2', 'efbe4786384f25e3', '0fc19dc68b8cd5b5', '240ca1cc77ac9c65', + '2de92c6f592b0275', '4a7484aa6ea6e483', '5cb0a9dcbd41fbd4', '76f988da831153b5', + '983e5152ee66dfab', 'a831c66d2db43210', 'b00327c898fb213f', 'bf597fc7beef0ee4', + 'c6e00bf33da88fc2', 'd5a79147930aa725', '06ca6351e003826f', '142929670a0e6e70', + '27b70a8546d22ffc', '2e1b21385c26c926', '4d2c6dfc5ac42aed', '53380d139d95b3df', + '650a73548baf63de', '766a0abb3c77b2a8', '81c2c92e47edaee6', '92722c851482353b', + 'a2bfe8a14cf10364', 'a81a664bbc423001', 'c24b8b70d0f89791', 'c76c51a30654be30', + 'd192e819d6ef5218', 'd69906245565a910', 'f40e35855771202a', '106aa07032bbd1b8', + '19a4c116b8d2d0c8', '1e376c085141ab53', '2748774cdf8eeb99', '34b0bcb5e19b48a8', + '391c0cb3c5c95a63', '4ed8aa4ae3418acb', '5b9cca4f7763e373', '682e6ff3d6b2b8a3', + '748f82ee5defb2fc', '78a5636f43172f60', '84c87814a1f0ab72', '8cc702081a6439ec', + '90befffa23631e28', 'a4506cebde82bde9', 'bef9a3f7b2c67915', 'c67178f2e372532b', + 'ca273eceea26619c', 'd186b8c721c0c207', 'eada7dd6cde0eb1e', 'f57d4f7fee6ed178', + '06f067aa72176fba', '0a637dc5a2c898a6', '113f9804bef90dae', '1b710b35131c471b', + '28db77f523047d84', '32caab7b40c72493', '3c9ebe0a15c9bebc', '431d67c49c100d4c', + '4cc5d4becb3e42b6', '597f299cfc657e2a', '5fcb6fab3ad6faec', '6c44198c4a475817' + ); + + for ($i = 0; $i < 80; $i++) { + $k[$i] = new Math_BigInteger($k[$i], 16); + } + } + + $hash = $this->l == 48 ? $init384 : $init512; + + // Pre-processing + $length = strlen($m); + // to round to nearest 112 mod 128, we'll add 128 - (length + (128 - 112)) % 128 + $m.= str_repeat(chr(0), 128 - (($length + 16) & 0x7F)); + $m[$length] = chr(0x80); + // we don't support hashing strings 512MB long + $m.= pack('N4', 0, 0, 0, $length << 3); + + // Process the message in successive 1024-bit chunks + $chunks = str_split($m, 128); + foreach ($chunks as $chunk) { + $w = array(); + for ($i = 0; $i < 16; $i++) { + $temp = new Math_BigInteger($this->_string_shift($chunk, 8), 256); + $temp->setPrecision(64); + $w[] = $temp; + } + + // Extend the sixteen 32-bit words into eighty 32-bit words + for ($i = 16; $i < 80; $i++) { + $temp = array( + $w[$i - 15]->bitwise_rightRotate(1), + $w[$i - 15]->bitwise_rightRotate(8), + $w[$i - 15]->bitwise_rightShift(7) + ); + $s0 = $temp[0]->bitwise_xor($temp[1]); + $s0 = $s0->bitwise_xor($temp[2]); + $temp = array( + $w[$i - 2]->bitwise_rightRotate(19), + $w[$i - 2]->bitwise_rightRotate(61), + $w[$i - 2]->bitwise_rightShift(6) + ); + $s1 = $temp[0]->bitwise_xor($temp[1]); + $s1 = $s1->bitwise_xor($temp[2]); + $w[$i] = $w[$i - 16]->copy(); + $w[$i] = $w[$i]->add($s0); + $w[$i] = $w[$i]->add($w[$i - 7]); + $w[$i] = $w[$i]->add($s1); + } + + // Initialize hash value for this chunk + $a = $hash[0]->copy(); + $b = $hash[1]->copy(); + $c = $hash[2]->copy(); + $d = $hash[3]->copy(); + $e = $hash[4]->copy(); + $f = $hash[5]->copy(); + $g = $hash[6]->copy(); + $h = $hash[7]->copy(); + + // Main loop + for ($i = 0; $i < 80; $i++) { + $temp = array( + $a->bitwise_rightRotate(28), + $a->bitwise_rightRotate(34), + $a->bitwise_rightRotate(39) + ); + $s0 = $temp[0]->bitwise_xor($temp[1]); + $s0 = $s0->bitwise_xor($temp[2]); + $temp = array( + $a->bitwise_and($b), + $a->bitwise_and($c), + $b->bitwise_and($c) + ); + $maj = $temp[0]->bitwise_xor($temp[1]); + $maj = $maj->bitwise_xor($temp[2]); + $t2 = $s0->add($maj); + + $temp = array( + $e->bitwise_rightRotate(14), + $e->bitwise_rightRotate(18), + $e->bitwise_rightRotate(41) + ); + $s1 = $temp[0]->bitwise_xor($temp[1]); + $s1 = $s1->bitwise_xor($temp[2]); + $temp = array( + $e->bitwise_and($f), + $g->bitwise_and($e->bitwise_not()) + ); + $ch = $temp[0]->bitwise_xor($temp[1]); + $t1 = $h->add($s1); + $t1 = $t1->add($ch); + $t1 = $t1->add($k[$i]); + $t1 = $t1->add($w[$i]); + + $h = $g->copy(); + $g = $f->copy(); + $f = $e->copy(); + $e = $d->add($t1); + $d = $c->copy(); + $c = $b->copy(); + $b = $a->copy(); + $a = $t1->add($t2); + } + + // Add this chunk's hash to result so far + $hash = array( + $hash[0]->add($a), + $hash[1]->add($b), + $hash[2]->add($c), + $hash[3]->add($d), + $hash[4]->add($e), + $hash[5]->add($f), + $hash[6]->add($g), + $hash[7]->add($h) + ); + } + + // Produce the final hash value (big-endian) + // (Crypt_Hash::hash() trims the output for hashes but not for HMACs. as such, we trim the output here) + $temp = $hash[0]->toBytes() . $hash[1]->toBytes() . $hash[2]->toBytes() . $hash[3]->toBytes() . + $hash[4]->toBytes() . $hash[5]->toBytes(); + if ($this->l != 48) { + $temp.= $hash[6]->toBytes() . $hash[7]->toBytes(); + } + + return $temp; + } + + /** + * Right Rotate + * + * @access private + * @param int $int + * @param int $amt + * @see self::_sha256() + * @return int + */ + function _rightRotate($int, $amt) + { + $invamt = 32 - $amt; + $mask = (1 << $invamt) - 1; + return (($int << $invamt) & 0xFFFFFFFF) | (($int >> $amt) & $mask); + } + + /** + * Right Shift + * + * @access private + * @param int $int + * @param int $amt + * @see self::_sha256() + * @return int + */ + function _rightShift($int, $amt) + { + $mask = (1 << (32 - $amt)) - 1; + return ($int >> $amt) & $mask; + } + + /** + * Not + * + * @access private + * @param int $int + * @see self::_sha256() + * @return int + */ + function _not($int) + { + return ~$int & 0xFFFFFFFF; + } + + /** + * Add + * + * _sha256() adds multiple unsigned 32-bit integers. Since PHP doesn't support unsigned integers and since the + * possibility of overflow exists, care has to be taken. Math_BigInteger() could be used but this should be faster. + * + * @return int + * @see self::_sha256() + * @access private + */ + function _add() + { + static $mod; + if (!isset($mod)) { + $mod = pow(2, 32); + } + + $result = 0; + $arguments = func_get_args(); + foreach ($arguments as $argument) { + $result+= $argument < 0 ? ($argument & 0x7FFFFFFF) + 0x80000000 : $argument; + } + + switch (true) { + case is_int($result): + // PHP 5.3, per http://php.net/releases/5_3_0.php, introduced "more consistent float rounding" + case version_compare(PHP_VERSION, '5.3.0') >= 0 && (php_uname('m') & "\xDF\xDF\xDF") != 'ARM': + // PHP_OS & "\xDF\xDF\xDF" == strtoupper(substr(PHP_OS, 0, 3)), but a lot faster + case (PHP_OS & "\xDF\xDF\xDF") === 'WIN': + return fmod($result, $mod); + } + + return (fmod($result, 0x80000000) & 0x7FFFFFFF) | + ((fmod(floor($result / 0x80000000), 2) & 1) << 31); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/Math/BigInteger.php b/app/Http/Controllers/dgaAdmin/Crypt/Math/BigInteger.php new file mode 100644 index 0000000..d17a783 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/Math/BigInteger.php @@ -0,0 +1,3833 @@ +> and << cannot be used, nor can the modulo operator %, + * which only supports integers. Although this fact will slow this library down, the fact that such a high + * base is being used should more than compensate. + * + * Numbers are stored in {@link http://en.wikipedia.org/wiki/Endianness little endian} format. ie. + * (new Math_BigInteger(pow(2, 26)))->value = array(0, 1) + * + * Useful resources are as follows: + * + * - {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf Handbook of Applied Cryptography (HAC)} + * - {@link http://math.libtomcrypt.com/files/tommath.pdf Multi-Precision Math (MPM)} + * - Java's BigInteger classes. See /j2se/src/share/classes/java/math in jdk-1_5_0-src-jrl.zip + * + * Here's an example of how to use this library: + * + * add($b); + * + * echo $c->toString(); // outputs 5 + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Math + * @package Math_BigInteger + * @author Jim Wigginton + * @copyright 2006 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + */ + +/**#@+ + * Reduction constants + * + * @access private + * @see self::_reduce() + */ +/** + * @see self::_montgomery() + * @see self::_prepMontgomery() + */ +define('MATH_BIGINTEGER_MONTGOMERY', 0); +/** + * @see self::_barrett() + */ +define('MATH_BIGINTEGER_BARRETT', 1); +/** + * @see self::_mod2() + */ +define('MATH_BIGINTEGER_POWEROF2', 2); +/** + * @see self::_remainder() + */ +define('MATH_BIGINTEGER_CLASSIC', 3); +/** + * @see self::__clone() + */ +define('MATH_BIGINTEGER_NONE', 4); +/**#@-*/ + +/**#@+ + * Array constants + * + * Rather than create a thousands and thousands of new Math_BigInteger objects in repeated function calls to add() and + * multiply() or whatever, we'll just work directly on arrays, taking them in as parameters and returning them. + * + * @access private + */ +/** + * $result[MATH_BIGINTEGER_VALUE] contains the value. + */ +define('MATH_BIGINTEGER_VALUE', 0); +/** + * $result[MATH_BIGINTEGER_SIGN] contains the sign. + */ +define('MATH_BIGINTEGER_SIGN', 1); +/**#@-*/ + +/**#@+ + * @access private + * @see self::_montgomery() + * @see self::_barrett() + */ +/** + * Cache constants + * + * $cache[MATH_BIGINTEGER_VARIABLE] tells us whether or not the cached data is still valid. + */ +define('MATH_BIGINTEGER_VARIABLE', 0); +/** + * $cache[MATH_BIGINTEGER_DATA] contains the cached data. + */ +define('MATH_BIGINTEGER_DATA', 1); +/**#@-*/ + +/**#@+ + * Mode constants. + * + * @access private + * @see self::Math_BigInteger() + */ +/** + * To use the pure-PHP implementation + */ +define('MATH_BIGINTEGER_MODE_INTERNAL', 1); +/** + * To use the BCMath library + * + * (if enabled; otherwise, the internal implementation will be used) + */ +define('MATH_BIGINTEGER_MODE_BCMATH', 2); +/** + * To use the GMP library + * + * (if present; otherwise, either the BCMath or the internal implementation will be used) + */ +define('MATH_BIGINTEGER_MODE_GMP', 3); +/**#@-*/ + +/** + * Karatsuba Cutoff + * + * At what point do we switch between Karatsuba multiplication and schoolbook long multiplication? + * + * @access private + */ +define('MATH_BIGINTEGER_KARATSUBA_CUTOFF', 25); + +/** + * Pure-PHP arbitrary precision integer arithmetic library. Supports base-2, base-10, base-16, and base-256 + * numbers. + * + * @package Math_BigInteger + * @author Jim Wigginton + * @access public + */ +class Math_BigInteger +{ + /** + * Holds the BigInteger's value. + * + * @var array + * @access private + */ + var $value; + + /** + * Holds the BigInteger's magnitude. + * + * @var bool + * @access private + */ + var $is_negative = false; + + /** + * Precision + * + * @see self::setPrecision() + * @access private + */ + var $precision = -1; + + /** + * Precision Bitmask + * + * @see self::setPrecision() + * @access private + */ + var $bitmask = false; + + /** + * Mode independent value used for serialization. + * + * If the bcmath or gmp extensions are installed $this->value will be a non-serializable resource, hence the need for + * a variable that'll be serializable regardless of whether or not extensions are being used. Unlike $this->value, + * however, $this->hex is only calculated when $this->__sleep() is called. + * + * @see self::__sleep() + * @see self::__wakeup() + * @var string + * @access private + */ + var $hex; + + /** + * Converts base-2, base-10, base-16, and binary strings (base-256) to BigIntegers. + * + * If the second parameter - $base - is negative, then it will be assumed that the number's are encoded using + * two's compliment. The sole exception to this is -10, which is treated the same as 10 is. + * + * Here's an example: + * + * toString(); // outputs 50 + * ?> + * + * + * @param int|string|resource $x base-10 number or base-$base number if $base set. + * @param int $base + * @return Math_BigInteger + * @access public + */ + function __construct($x = 0, $base = 10) + { + if (!defined('MATH_BIGINTEGER_MODE')) { + switch (true) { + case extension_loaded('gmp'): + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_GMP); + break; + case extension_loaded('bcmath'): + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_BCMATH); + break; + default: + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL); + } + } + + if (function_exists('phpinfo') && extension_loaded('openssl') && !defined('MATH_BIGINTEGER_OPENSSL_DISABLE') && !defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + // some versions of XAMPP have mismatched versions of OpenSSL which causes it not to work + ob_start(); + @phpinfo(); + $content = ob_get_contents(); + ob_end_clean(); + + preg_match_all('#OpenSSL (Header|Library) Version(.*)#im', $content, $matches); + + $versions = array(); + if (!empty($matches[1])) { + for ($i = 0; $i < count($matches[1]); $i++) { + $fullVersion = trim(str_replace('=>', '', strip_tags($matches[2][$i]))); + + // Remove letter part in OpenSSL version + if (!preg_match('/(\d+\.\d+\.\d+)/i', $fullVersion, $m)) { + $versions[$matches[1][$i]] = $fullVersion; + } else { + $versions[$matches[1][$i]] = $m[0]; + } + } + } + + // it doesn't appear that OpenSSL versions were reported upon until PHP 5.3+ + switch (true) { + case !isset($versions['Header']): + case !isset($versions['Library']): + case $versions['Header'] == $versions['Library']: + case version_compare($versions['Header'], '1.0.0') >= 0 && version_compare($versions['Library'], '1.0.0') >= 0: + define('MATH_BIGINTEGER_OPENSSL_ENABLED', true); + break; + default: + define('MATH_BIGINTEGER_OPENSSL_DISABLE', true); + } + } + + if (!defined('PHP_INT_SIZE')) { + define('PHP_INT_SIZE', 4); + } + + if (!defined('MATH_BIGINTEGER_BASE') && MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_INTERNAL) { + switch (PHP_INT_SIZE) { + case 8: // use 64-bit integers if int size is 8 bytes + define('MATH_BIGINTEGER_BASE', 31); + define('MATH_BIGINTEGER_BASE_FULL', 0x80000000); + define('MATH_BIGINTEGER_MAX_DIGIT', 0x7FFFFFFF); + define('MATH_BIGINTEGER_MSB', 0x40000000); + // 10**9 is the closest we can get to 2**31 without passing it + define('MATH_BIGINTEGER_MAX10', 1000000000); + define('MATH_BIGINTEGER_MAX10_LEN', 9); + // the largest digit that may be used in addition / subtraction + define('MATH_BIGINTEGER_MAX_DIGIT2', pow(2, 62)); + break; + //case 4: // use 64-bit floats if int size is 4 bytes + default: + define('MATH_BIGINTEGER_BASE', 26); + define('MATH_BIGINTEGER_BASE_FULL', 0x4000000); + define('MATH_BIGINTEGER_MAX_DIGIT', 0x3FFFFFF); + define('MATH_BIGINTEGER_MSB', 0x2000000); + // 10**7 is the closest to 2**26 without passing it + define('MATH_BIGINTEGER_MAX10', 10000000); + define('MATH_BIGINTEGER_MAX10_LEN', 7); + // the largest digit that may be used in addition / subtraction + // we do pow(2, 52) instead of using 4503599627370496 directly because some + // PHP installations will truncate 4503599627370496. + define('MATH_BIGINTEGER_MAX_DIGIT2', pow(2, 52)); + } + } + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + switch (true) { + case is_resource($x) && get_resource_type($x) == 'GMP integer': + // PHP 5.6 switched GMP from using resources to objects + case is_object($x) && get_class($x) == 'GMP': + $this->value = $x; + return; + } + $this->value = gmp_init(0); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $this->value = '0'; + break; + default: + $this->value = array(); + } + + // '0' counts as empty() but when the base is 256 '0' is equal to ord('0') or 48 + // '0' is the only value like this per http://php.net/empty + if (empty($x) && (abs($base) != 256 || $x !== '0')) { + return; + } + + switch ($base) { + case -256: + if (ord($x[0]) & 0x80) { + $x = ~$x; + $this->is_negative = true; + } + case 256: + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $this->value = function_exists('gmp_import') ? + gmp_import($x) : + gmp_init('0x' . bin2hex($x)); + if ($this->is_negative) { + $this->value = gmp_neg($this->value); + } + break; + case MATH_BIGINTEGER_MODE_BCMATH: + // round $len to the nearest 4 (thanks, DavidMJ!) + $len = (strlen($x) + 3) & 0xFFFFFFFC; + + $x = str_pad($x, $len, chr(0), STR_PAD_LEFT); + + for ($i = 0; $i < $len; $i+= 4) { + $this->value = bcmul($this->value, '4294967296', 0); // 4294967296 == 2**32 + $this->value = bcadd($this->value, 0x1000000 * ord($x[$i]) + ((ord($x[$i + 1]) << 16) | (ord($x[$i + 2]) << 8) | ord($x[$i + 3])), 0); + } + + if ($this->is_negative) { + $this->value = '-' . $this->value; + } + + break; + // converts a base-2**8 (big endian / msb) number to base-2**26 (little endian / lsb) + default: + while (strlen($x)) { + $this->value[] = $this->_bytes2int($this->_base256_rshift($x, MATH_BIGINTEGER_BASE)); + } + } + + if ($this->is_negative) { + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + $this->is_negative = false; + } + $temp = $this->add(new Math_BigInteger('-1')); + $this->value = $temp->value; + } + break; + case 16: + case -16: + if ($base > 0 && $x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = preg_replace('#^(?:0x)?([A-Fa-f0-9]*).*#', '$1', $x); + + $is_negative = false; + if ($base < 0 && hexdec($x[0]) >= 8) { + $this->is_negative = $is_negative = true; + $x = bin2hex(~pack('H*', $x)); + } + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = $this->is_negative ? '-0x' . $x : '0x' . $x; + $this->value = gmp_init($temp); + $this->is_negative = false; + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $x = (strlen($x) & 1) ? '0' . $x : $x; + $temp = new Math_BigInteger(pack('H*', $x), 256); + $this->value = $this->is_negative ? '-' . $temp->value : $temp->value; + $this->is_negative = false; + break; + default: + $x = (strlen($x) & 1) ? '0' . $x : $x; + $temp = new Math_BigInteger(pack('H*', $x), 256); + $this->value = $temp->value; + } + + if ($is_negative) { + $temp = $this->add(new Math_BigInteger('-1')); + $this->value = $temp->value; + } + break; + case 10: + case -10: + // (?value = gmp_init($x); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + // explicitly casting $x to a string is necessary, here, since doing $x[0] on -1 yields different + // results then doing it on '-1' does (modInverse does $x[0]) + $this->value = $x === '-' ? '0' : (string) $x; + break; + default: + $temp = new Math_BigInteger(); + + $multiplier = new Math_BigInteger(); + $multiplier->value = array(MATH_BIGINTEGER_MAX10); + + if ($x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = str_pad($x, strlen($x) + ((MATH_BIGINTEGER_MAX10_LEN - 1) * strlen($x)) % MATH_BIGINTEGER_MAX10_LEN, 0, STR_PAD_LEFT); + while (strlen($x)) { + $temp = $temp->multiply($multiplier); + $temp = $temp->add(new Math_BigInteger($this->_int2bytes(substr($x, 0, MATH_BIGINTEGER_MAX10_LEN)), 256)); + $x = substr($x, MATH_BIGINTEGER_MAX10_LEN); + } + + $this->value = $temp->value; + } + break; + case 2: // base-2 support originally implemented by Lluis Pamies - thanks! + case -2: + if ($base > 0 && $x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = preg_replace('#^([01]*).*#', '$1', $x); + $x = str_pad($x, strlen($x) + (3 * strlen($x)) % 4, 0, STR_PAD_LEFT); + + $str = '0x'; + while (strlen($x)) { + $part = substr($x, 0, 4); + $str.= dechex(bindec($part)); + $x = substr($x, 4); + } + + if ($this->is_negative) { + $str = '-' . $str; + } + + $temp = new Math_BigInteger($str, 8 * $base); // ie. either -16 or +16 + $this->value = $temp->value; + $this->is_negative = $temp->is_negative; + + break; + default: + // base not supported, so we'll let $this == 0 + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param $x base-10 number or base-$base number if $base set. + * @param int $base + * @access public + */ + function Math_BigInteger($x = 0, $base = 10) + { + $this->__construct($x, $base); + } + + /** + * Converts a BigInteger to a byte string (eg. base-256). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toBytes(); // outputs chr(65) + * ?> + * + * + * @param bool $twos_compliment + * @return string + * @access public + * @internal Converts a base-2**26 number to base-2**8 + */ + function toBytes($twos_compliment = false) + { + if ($twos_compliment) { + $comparison = $this->compare(new Math_BigInteger()); + if ($comparison == 0) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $temp = $comparison < 0 ? $this->add(new Math_BigInteger(1)) : $this->copy(); + $bytes = $temp->toBytes(); + + if (!strlen($bytes)) { // eg. if the number we're trying to convert is -1 + $bytes = chr(0); + } + + if ($this->precision <= 0 && (ord($bytes[0]) & 0x80)) { + $bytes = chr(0) . $bytes; + } + + return $comparison < 0 ? ~$bytes : $bytes; + } + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + if (gmp_cmp($this->value, gmp_init(0)) == 0) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + if (function_exists('gmp_export')) { + $temp = gmp_export($this->value); + } else { + $temp = gmp_strval(gmp_abs($this->value), 16); + $temp = (strlen($temp) & 1) ? '0' . $temp : $temp; + $temp = pack('H*', $temp); + } + + return $this->precision > 0 ? + substr(str_pad($temp, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) : + ltrim($temp, chr(0)); + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '0') { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $value = ''; + $current = $this->value; + + if ($current[0] == '-') { + $current = substr($current, 1); + } + + while (bccomp($current, '0', 0) > 0) { + $temp = bcmod($current, '16777216'); + $value = chr($temp >> 16) . chr($temp >> 8) . chr($temp) . $value; + $current = bcdiv($current, '16777216', 0); + } + + return $this->precision > 0 ? + substr(str_pad($value, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) : + ltrim($value, chr(0)); + } + + if (!count($this->value)) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + $result = $this->_int2bytes($this->value[count($this->value) - 1]); + + $temp = $this->copy(); + + for ($i = count($temp->value) - 2; $i >= 0; --$i) { + $temp->_base256_lshift($result, MATH_BIGINTEGER_BASE); + $result = $result | str_pad($temp->_int2bytes($temp->value[$i]), strlen($result), chr(0), STR_PAD_LEFT); + } + + return $this->precision > 0 ? + str_pad(substr($result, -(($this->precision + 7) >> 3)), ($this->precision + 7) >> 3, chr(0), STR_PAD_LEFT) : + $result; + } + + /** + * Converts a BigInteger to a hex string (eg. base-16)). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toHex(); // outputs '41' + * ?> + * + * + * @param bool $twos_compliment + * @return string + * @access public + * @internal Converts a base-2**26 number to base-2**8 + */ + function toHex($twos_compliment = false) + { + return bin2hex($this->toBytes($twos_compliment)); + } + + /** + * Converts a BigInteger to a bit string (eg. base-2). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toBits(); // outputs '1000001' + * ?> + * + * + * @param bool $twos_compliment + * @return string + * @access public + * @internal Converts a base-2**26 number to base-2**2 + */ + function toBits($twos_compliment = false) + { + $hex = $this->toHex($twos_compliment); + $bits = ''; + for ($i = strlen($hex) - 6, $start = strlen($hex) % 6; $i >= $start; $i-=6) { + $bits = str_pad(decbin(hexdec(substr($hex, $i, 6))), 24, '0', STR_PAD_LEFT) . $bits; + } + if ($start) { // hexdec('') == 0 + $bits = str_pad(decbin(hexdec(substr($hex, 0, $start))), 8 * $start, '0', STR_PAD_LEFT) . $bits; + } + $result = $this->precision > 0 ? substr($bits, -$this->precision) : ltrim($bits, '0'); + + if ($twos_compliment && $this->compare(new Math_BigInteger()) > 0 && $this->precision <= 0) { + return '0' . $result; + } + + return $result; + } + + /** + * Converts a BigInteger to a base-10 number. + * + * Here's an example: + * + * toString(); // outputs 50 + * ?> + * + * + * @return string + * @access public + * @internal Converts a base-2**26 number to base-10**7 (which is pretty much base-10) + */ + function toString() + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_strval($this->value); + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '0') { + return '0'; + } + + return ltrim($this->value, '0'); + } + + if (!count($this->value)) { + return '0'; + } + + $temp = $this->copy(); + $temp->bitmask = false; + $temp->is_negative = false; + + $divisor = new Math_BigInteger(); + $divisor->value = array(MATH_BIGINTEGER_MAX10); + $result = ''; + while (count($temp->value)) { + list($temp, $mod) = $temp->divide($divisor); + $result = str_pad(isset($mod->value[0]) ? $mod->value[0] : '', MATH_BIGINTEGER_MAX10_LEN, '0', STR_PAD_LEFT) . $result; + } + $result = ltrim($result, '0'); + if (empty($result)) { + $result = '0'; + } + + if ($this->is_negative) { + $result = '-' . $result; + } + + return $result; + } + + /** + * Copy an object + * + * PHP5 passes objects by reference while PHP4 passes by value. As such, we need a function to guarantee + * that all objects are passed by value, when appropriate. More information can be found here: + * + * {@link http://php.net/language.oop5.basic#51624} + * + * @access public + * @see self::__clone() + * @return Math_BigInteger + */ + function copy() + { + $temp = new Math_BigInteger(); + $temp->value = $this->value; + $temp->is_negative = $this->is_negative; + $temp->precision = $this->precision; + $temp->bitmask = $this->bitmask; + return $temp; + } + + /** + * __toString() magic method + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * toString(). + * + * @access public + * @internal Implemented per a suggestion by Techie-Michael - thanks! + */ + function __toString() + { + return $this->toString(); + } + + /** + * __clone() magic method + * + * Although you can call Math_BigInteger::__toString() directly in PHP5, you cannot call Math_BigInteger::__clone() + * directly in PHP5. You can in PHP4 since it's not a magic method, but in PHP5, you have to call it by using the PHP5 + * only syntax of $y = clone $x. As such, if you're trying to write an application that works on both PHP4 and PHP5, + * call Math_BigInteger::copy(), instead. + * + * @access public + * @see self::copy() + * @return Math_BigInteger + */ + function __clone() + { + return $this->copy(); + } + + /** + * __sleep() magic method + * + * Will be called, automatically, when serialize() is called on a Math_BigInteger object. + * + * @see self::__wakeup() + * @access public + */ + function __sleep() + { + $this->hex = $this->toHex(true); + $vars = array('hex'); + if ($this->precision > 0) { + $vars[] = 'precision'; + } + return $vars; + } + + /** + * __wakeup() magic method + * + * Will be called, automatically, when unserialize() is called on a Math_BigInteger object. + * + * @see self::__sleep() + * @access public + */ + function __wakeup() + { + $temp = new Math_BigInteger($this->hex, -16); + $this->value = $temp->value; + $this->is_negative = $temp->is_negative; + if ($this->precision > 0) { + // recalculate $this->bitmask + $this->setPrecision($this->precision); + } + } + + /** + * __debugInfo() magic method + * + * Will be called, automatically, when print_r() or var_dump() are called + * + * @access public + */ + function __debugInfo() + { + $opts = array(); + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $engine = 'gmp'; + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $engine = 'bcmath'; + break; + case MATH_BIGINTEGER_MODE_INTERNAL: + $engine = 'internal'; + $opts[] = PHP_INT_SIZE == 8 ? '64-bit' : '32-bit'; + } + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_GMP && defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + $opts[] = 'OpenSSL'; + } + if (!empty($opts)) { + $engine.= ' (' . implode('.', $opts) . ')'; + } + return array( + 'value' => '0x' . $this->toHex(true), + 'engine' => $engine + ); + } + + /** + * Adds two BigIntegers. + * + * Here's an example: + * + * add($b); + * + * echo $c->toString(); // outputs 30 + * ?> + * + * + * @param Math_BigInteger $y + * @return Math_BigInteger + * @access public + * @internal Performs base-2**52 addition + */ + function add($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_add($this->value, $y->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcadd($this->value, $y->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_add($this->value, $this->is_negative, $y->value, $y->is_negative); + + $result = new Math_BigInteger(); + $result->value = $temp[MATH_BIGINTEGER_VALUE]; + $result->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($result); + } + + /** + * Performs addition. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return array + * @access private + */ + function _add($x_value, $x_negative, $y_value, $y_negative) + { + $x_size = count($x_value); + $y_size = count($y_value); + + if ($x_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $y_value, + MATH_BIGINTEGER_SIGN => $y_negative + ); + } elseif ($y_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $x_value, + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + // subtract, if appropriate + if ($x_negative != $y_negative) { + if ($x_value == $y_value) { + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + $temp = $this->_subtract($x_value, false, $y_value, false); + $temp[MATH_BIGINTEGER_SIGN] = $this->_compare($x_value, false, $y_value, false) > 0 ? + $x_negative : $y_negative; + + return $temp; + } + + if ($x_size < $y_size) { + $size = $x_size; + $value = $y_value; + } else { + $size = $y_size; + $value = $x_value; + } + + $value[count($value)] = 0; // just in case the carry adds an extra digit + + $carry = 0; + for ($i = 0, $j = 1; $j < $size; $i+=2, $j+=2) { + $sum = $x_value[$j] * MATH_BIGINTEGER_BASE_FULL + $x_value[$i] + $y_value[$j] * MATH_BIGINTEGER_BASE_FULL + $y_value[$i] + $carry; + $carry = $sum >= MATH_BIGINTEGER_MAX_DIGIT2; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1 + $sum = $carry ? $sum - MATH_BIGINTEGER_MAX_DIGIT2 : $sum; + + $temp = MATH_BIGINTEGER_BASE === 26 ? intval($sum / 0x4000000) : ($sum >> 31); + + $value[$i] = (int) ($sum - MATH_BIGINTEGER_BASE_FULL * $temp); // eg. a faster alternative to fmod($sum, 0x4000000) + $value[$j] = $temp; + } + + if ($j == $size) { // ie. if $y_size is odd + $sum = $x_value[$i] + $y_value[$i] + $carry; + $carry = $sum >= MATH_BIGINTEGER_BASE_FULL; + $value[$i] = $carry ? $sum - MATH_BIGINTEGER_BASE_FULL : $sum; + ++$i; // ie. let $i = $j since we've just done $value[$i] + } + + if ($carry) { + for (; $value[$i] == MATH_BIGINTEGER_MAX_DIGIT; ++$i) { + $value[$i] = 0; + } + ++$value[$i]; + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($value), + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + /** + * Subtracts two BigIntegers. + * + * Here's an example: + * + * subtract($b); + * + * echo $c->toString(); // outputs -10 + * ?> + * + * + * @param Math_BigInteger $y + * @return Math_BigInteger + * @access public + * @internal Performs base-2**52 subtraction + */ + function subtract($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_sub($this->value, $y->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcsub($this->value, $y->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_subtract($this->value, $this->is_negative, $y->value, $y->is_negative); + + $result = new Math_BigInteger(); + $result->value = $temp[MATH_BIGINTEGER_VALUE]; + $result->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($result); + } + + /** + * Performs subtraction. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return array + * @access private + */ + function _subtract($x_value, $x_negative, $y_value, $y_negative) + { + $x_size = count($x_value); + $y_size = count($y_value); + + if ($x_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $y_value, + MATH_BIGINTEGER_SIGN => !$y_negative + ); + } elseif ($y_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $x_value, + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + // add, if appropriate (ie. -$x - +$y or +$x - -$y) + if ($x_negative != $y_negative) { + $temp = $this->_add($x_value, false, $y_value, false); + $temp[MATH_BIGINTEGER_SIGN] = $x_negative; + + return $temp; + } + + $diff = $this->_compare($x_value, $x_negative, $y_value, $y_negative); + + if (!$diff) { + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + // switch $x and $y around, if appropriate. + if ((!$x_negative && $diff < 0) || ($x_negative && $diff > 0)) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_negative = !$x_negative; + + $x_size = count($x_value); + $y_size = count($y_value); + } + + // at this point, $x_value should be at least as big as - if not bigger than - $y_value + + $carry = 0; + for ($i = 0, $j = 1; $j < $y_size; $i+=2, $j+=2) { + $sum = $x_value[$j] * MATH_BIGINTEGER_BASE_FULL + $x_value[$i] - $y_value[$j] * MATH_BIGINTEGER_BASE_FULL - $y_value[$i] - $carry; + $carry = $sum < 0; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1 + $sum = $carry ? $sum + MATH_BIGINTEGER_MAX_DIGIT2 : $sum; + + $temp = MATH_BIGINTEGER_BASE === 26 ? intval($sum / 0x4000000) : ($sum >> 31); + + $x_value[$i] = (int) ($sum - MATH_BIGINTEGER_BASE_FULL * $temp); + $x_value[$j] = $temp; + } + + if ($j == $y_size) { // ie. if $y_size is odd + $sum = $x_value[$i] - $y_value[$i] - $carry; + $carry = $sum < 0; + $x_value[$i] = $carry ? $sum + MATH_BIGINTEGER_BASE_FULL : $sum; + ++$i; + } + + if ($carry) { + for (; !$x_value[$i]; ++$i) { + $x_value[$i] = MATH_BIGINTEGER_MAX_DIGIT; + } + --$x_value[$i]; + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($x_value), + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + /** + * Multiplies two BigIntegers + * + * Here's an example: + * + * multiply($b); + * + * echo $c->toString(); // outputs 200 + * ?> + * + * + * @param Math_BigInteger $x + * @return Math_BigInteger + * @access public + */ + function multiply($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_mul($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcmul($this->value, $x->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_multiply($this->value, $this->is_negative, $x->value, $x->is_negative); + + $product = new Math_BigInteger(); + $product->value = $temp[MATH_BIGINTEGER_VALUE]; + $product->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($product); + } + + /** + * Performs multiplication. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return array + * @access private + */ + function _multiply($x_value, $x_negative, $y_value, $y_negative) + { + //if ( $x_value == $y_value ) { + // return array( + // MATH_BIGINTEGER_VALUE => $this->_square($x_value), + // MATH_BIGINTEGER_SIGN => $x_sign != $y_value + // ); + //} + + $x_length = count($x_value); + $y_length = count($y_value); + + if (!$x_length || !$y_length) { // a 0 is being multiplied + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + return array( + MATH_BIGINTEGER_VALUE => min($x_length, $y_length) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ? + $this->_trim($this->_regularMultiply($x_value, $y_value)) : + $this->_trim($this->_karatsuba($x_value, $y_value)), + MATH_BIGINTEGER_SIGN => $x_negative != $y_negative + ); + } + + /** + * Performs long multiplication on two BigIntegers + * + * Modeled after 'multiply' in MutableBigInteger.java. + * + * @param array $x_value + * @param array $y_value + * @return array + * @access private + */ + function _regularMultiply($x_value, $y_value) + { + $x_length = count($x_value); + $y_length = count($y_value); + + if (!$x_length || !$y_length) { // a 0 is being multiplied + return array(); + } + + if ($x_length < $y_length) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_length = count($x_value); + $y_length = count($y_value); + } + + $product_value = $this->_array_repeat(0, $x_length + $y_length); + + // the following for loop could be removed if the for loop following it + // (the one with nested for loops) initially set $i to 0, but + // doing so would also make the result in one set of unnecessary adds, + // since on the outermost loops first pass, $product->value[$k] is going + // to always be 0 + + $carry = 0; + + for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0 + $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0 + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$j] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + $product_value[$j] = $carry; + + // the above for loop is what the previous comment was talking about. the + // following for loop is the "one with nested for loops" + for ($i = 1; $i < $y_length; ++$i) { + $carry = 0; + + for ($j = 0, $k = $i; $j < $x_length; ++$j, ++$k) { + $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$k] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + $product_value[$k] = $carry; + } + + return $product_value; + } + + /** + * Performs Karatsuba multiplication on two BigIntegers + * + * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=120 MPM 5.2.3}. + * + * @param array $x_value + * @param array $y_value + * @return array + * @access private + */ + function _karatsuba($x_value, $y_value) + { + $m = min(count($x_value) >> 1, count($y_value) >> 1); + + if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) { + return $this->_regularMultiply($x_value, $y_value); + } + + $x1 = array_slice($x_value, $m); + $x0 = array_slice($x_value, 0, $m); + $y1 = array_slice($y_value, $m); + $y0 = array_slice($y_value, 0, $m); + + $z2 = $this->_karatsuba($x1, $y1); + $z0 = $this->_karatsuba($x0, $y0); + + $z1 = $this->_add($x1, false, $x0, false); + $temp = $this->_add($y1, false, $y0, false); + $z1 = $this->_karatsuba($z1[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_VALUE]); + $temp = $this->_add($z2, false, $z0, false); + $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false); + + $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2); + $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]); + + $xy = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]); + $xy = $this->_add($xy[MATH_BIGINTEGER_VALUE], $xy[MATH_BIGINTEGER_SIGN], $z0, false); + + return $xy[MATH_BIGINTEGER_VALUE]; + } + + /** + * Performs squaring + * + * @param array $x + * @return array + * @access private + */ + function _square($x = false) + { + return count($x) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ? + $this->_trim($this->_baseSquare($x)) : + $this->_trim($this->_karatsubaSquare($x)); + } + + /** + * Performs traditional squaring on two BigIntegers + * + * Squaring can be done faster than multiplying a number by itself can be. See + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=7 HAC 14.2.4} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=141 MPM 5.3} for more information. + * + * @param array $value + * @return array + * @access private + */ + function _baseSquare($value) + { + if (empty($value)) { + return array(); + } + $square_value = $this->_array_repeat(0, 2 * count($value)); + + for ($i = 0, $max_index = count($value) - 1; $i <= $max_index; ++$i) { + $i2 = $i << 1; + + $temp = $square_value[$i2] + $value[$i] * $value[$i]; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $square_value[$i2] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + + // note how we start from $i+1 instead of 0 as we do in multiplication. + for ($j = $i + 1, $k = $i2 + 1; $j <= $max_index; ++$j, ++$k) { + $temp = $square_value[$k] + 2 * $value[$j] * $value[$i] + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $square_value[$k] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + // the following line can yield values larger 2**15. at this point, PHP should switch + // over to floats. + $square_value[$i + $max_index + 1] = $carry; + } + + return $square_value; + } + + /** + * Performs Karatsuba "squaring" on two BigIntegers + * + * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=151 MPM 5.3.4}. + * + * @param array $value + * @return array + * @access private + */ + function _karatsubaSquare($value) + { + $m = count($value) >> 1; + + if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) { + return $this->_baseSquare($value); + } + + $x1 = array_slice($value, $m); + $x0 = array_slice($value, 0, $m); + + $z2 = $this->_karatsubaSquare($x1); + $z0 = $this->_karatsubaSquare($x0); + + $z1 = $this->_add($x1, false, $x0, false); + $z1 = $this->_karatsubaSquare($z1[MATH_BIGINTEGER_VALUE]); + $temp = $this->_add($z2, false, $z0, false); + $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false); + + $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2); + $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]); + + $xx = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]); + $xx = $this->_add($xx[MATH_BIGINTEGER_VALUE], $xx[MATH_BIGINTEGER_SIGN], $z0, false); + + return $xx[MATH_BIGINTEGER_VALUE]; + } + + /** + * Divides two BigIntegers. + * + * Returns an array whose first element contains the quotient and whose second element contains the + * "common residue". If the remainder would be positive, the "common residue" and the remainder are the + * same. If the remainder would be negative, the "common residue" is equal to the sum of the remainder + * and the divisor (basically, the "common residue" is the first positive modulo). + * + * Here's an example: + * + * divide($b); + * + * echo $quotient->toString(); // outputs 0 + * echo "\r\n"; + * echo $remainder->toString(); // outputs 10 + * ?> + * + * + * @param Math_BigInteger $y + * @return array + * @access public + * @internal This function is based off of {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=9 HAC 14.20}. + */ + function divide($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + + list($quotient->value, $remainder->value) = gmp_div_qr($this->value, $y->value); + + if (gmp_sign($remainder->value) < 0) { + $remainder->value = gmp_add($remainder->value, gmp_abs($y->value)); + } + + return array($this->_normalize($quotient), $this->_normalize($remainder)); + case MATH_BIGINTEGER_MODE_BCMATH: + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + + $quotient->value = bcdiv($this->value, $y->value, 0); + $remainder->value = bcmod($this->value, $y->value); + + if ($remainder->value[0] == '-') { + $remainder->value = bcadd($remainder->value, $y->value[0] == '-' ? substr($y->value, 1) : $y->value, 0); + } + + return array($this->_normalize($quotient), $this->_normalize($remainder)); + } + + if (count($y->value) == 1) { + list($q, $r) = $this->_divide_digit($this->value, $y->value[0]); + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + $quotient->value = $q; + $remainder->value = array($r); + $quotient->is_negative = $this->is_negative != $y->is_negative; + return array($this->_normalize($quotient), $this->_normalize($remainder)); + } + + static $zero; + if (!isset($zero)) { + $zero = new Math_BigInteger(); + } + + $x = $this->copy(); + $y = $y->copy(); + + $x_sign = $x->is_negative; + $y_sign = $y->is_negative; + + $x->is_negative = $y->is_negative = false; + + $diff = $x->compare($y); + + if (!$diff) { + $temp = new Math_BigInteger(); + $temp->value = array(1); + $temp->is_negative = $x_sign != $y_sign; + return array($this->_normalize($temp), $this->_normalize(new Math_BigInteger())); + } + + if ($diff < 0) { + // if $x is negative, "add" $y. + if ($x_sign) { + $x = $y->subtract($x); + } + return array($this->_normalize(new Math_BigInteger()), $this->_normalize($x)); + } + + // normalize $x and $y as described in HAC 14.23 / 14.24 + $msb = $y->value[count($y->value) - 1]; + for ($shift = 0; !($msb & MATH_BIGINTEGER_MSB); ++$shift) { + $msb <<= 1; + } + $x->_lshift($shift); + $y->_lshift($shift); + $y_value = &$y->value; + + $x_max = count($x->value) - 1; + $y_max = count($y->value) - 1; + + $quotient = new Math_BigInteger(); + $quotient_value = &$quotient->value; + $quotient_value = $this->_array_repeat(0, $x_max - $y_max + 1); + + static $temp, $lhs, $rhs; + if (!isset($temp)) { + $temp = new Math_BigInteger(); + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + } + $temp_value = &$temp->value; + $rhs_value = &$rhs->value; + + // $temp = $y << ($x_max - $y_max-1) in base 2**26 + $temp_value = array_merge($this->_array_repeat(0, $x_max - $y_max), $y_value); + + while ($x->compare($temp) >= 0) { + // calculate the "common residue" + ++$quotient_value[$x_max - $y_max]; + $x = $x->subtract($temp); + $x_max = count($x->value) - 1; + } + + for ($i = $x_max; $i >= $y_max + 1; --$i) { + $x_value = &$x->value; + $x_window = array( + isset($x_value[$i]) ? $x_value[$i] : 0, + isset($x_value[$i - 1]) ? $x_value[$i - 1] : 0, + isset($x_value[$i - 2]) ? $x_value[$i - 2] : 0 + ); + $y_window = array( + $y_value[$y_max], + ($y_max > 0) ? $y_value[$y_max - 1] : 0 + ); + + $q_index = $i - $y_max - 1; + if ($x_window[0] == $y_window[0]) { + $quotient_value[$q_index] = MATH_BIGINTEGER_MAX_DIGIT; + } else { + $quotient_value[$q_index] = $this->_safe_divide( + $x_window[0] * MATH_BIGINTEGER_BASE_FULL + $x_window[1], + $y_window[0] + ); + } + + $temp_value = array($y_window[1], $y_window[0]); + + $lhs->value = array($quotient_value[$q_index]); + $lhs = $lhs->multiply($temp); + + $rhs_value = array($x_window[2], $x_window[1], $x_window[0]); + + while ($lhs->compare($rhs) > 0) { + --$quotient_value[$q_index]; + + $lhs->value = array($quotient_value[$q_index]); + $lhs = $lhs->multiply($temp); + } + + $adjust = $this->_array_repeat(0, $q_index); + $temp_value = array($quotient_value[$q_index]); + $temp = $temp->multiply($y); + $temp_value = &$temp->value; + if (count($temp_value)) { + $temp_value = array_merge($adjust, $temp_value); + } + + $x = $x->subtract($temp); + + if ($x->compare($zero) < 0) { + $temp_value = array_merge($adjust, $y_value); + $x = $x->add($temp); + + --$quotient_value[$q_index]; + } + + $x_max = count($x_value) - 1; + } + + // unnormalize the remainder + $x->_rshift($shift); + + $quotient->is_negative = $x_sign != $y_sign; + + // calculate the "common residue", if appropriate + if ($x_sign) { + $y->_rshift($shift); + $x = $y->subtract($x); + } + + return array($this->_normalize($quotient), $this->_normalize($x)); + } + + /** + * Divides a BigInteger by a regular integer + * + * abc / x = a00 / x + b0 / x + c / x + * + * @param array $dividend + * @param array $divisor + * @return array + * @access private + */ + function _divide_digit($dividend, $divisor) + { + $carry = 0; + $result = array(); + + for ($i = count($dividend) - 1; $i >= 0; --$i) { + $temp = MATH_BIGINTEGER_BASE_FULL * $carry + $dividend[$i]; + $result[$i] = $this->_safe_divide($temp, $divisor); + $carry = (int) ($temp - $divisor * $result[$i]); + } + + return array($result, $carry); + } + + /** + * Performs modular exponentiation. + * + * Here's an example: + * + * modPow($b, $c); + * + * echo $c->toString(); // outputs 10 + * ?> + * + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + * @internal The most naive approach to modular exponentiation has very unreasonable requirements, and + * and although the approach involving repeated squaring does vastly better, it, too, is impractical + * for our purposes. The reason being that division - by far the most complicated and time-consuming + * of the basic operations (eg. +,-,*,/) - occurs multiple times within it. + * + * Modular reductions resolve this issue. Although an individual modular reduction takes more time + * then an individual division, when performed in succession (with the same modulo), they're a lot faster. + * + * The two most commonly used modular reductions are Barrett and Montgomery reduction. Montgomery reduction, + * although faster, only works when the gcd of the modulo and of the base being used is 1. In RSA, when the + * base is a power of two, the modulo - a product of two primes - is always going to have a gcd of 1 (because + * the product of two odd numbers is odd), but what about when RSA isn't used? + * + * In contrast, Barrett reduction has no such constraint. As such, some bigint implementations perform a + * Barrett reduction after every operation in the modpow function. Others perform Barrett reductions when the + * modulo is even and Montgomery reductions when the modulo is odd. BigInteger.java's modPow method, however, + * uses a trick involving the Chinese Remainder Theorem to factor the even modulo into two numbers - one odd and + * the other, a power of two - and recombine them, later. This is the method that this modPow function uses. + * {@link http://islab.oregonstate.edu/papers/j34monex.pdf Montgomery Reduction with Even Modulus} elaborates. + */ + function modPow($e, $n) + { + $n = $this->bitmask !== false && $this->bitmask->compare($n) < 0 ? $this->bitmask : $n->abs(); + + if ($e->compare(new Math_BigInteger()) < 0) { + $e = $e->abs(); + + $temp = $this->modInverse($n); + if ($temp === false) { + return false; + } + + return $this->_normalize($temp->modPow($e, $n)); + } + + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP) { + $temp = new Math_BigInteger(); + $temp->value = gmp_powm($this->value, $e->value, $n->value); + + return $this->_normalize($temp); + } + + if ($this->compare(new Math_BigInteger()) < 0 || $this->compare($n) > 0) { + list(, $temp) = $this->divide($n); + return $temp->modPow($e, $n); + } + + if (defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + $components = array( + 'modulus' => $n->toBytes(true), + 'publicExponent' => $e->toBytes(true) + ); + + $components = array( + 'modulus' => pack('Ca*a*', 2, $this->_encodeASN1Length(strlen($components['modulus'])), $components['modulus']), + 'publicExponent' => pack('Ca*a*', 2, $this->_encodeASN1Length(strlen($components['publicExponent'])), $components['publicExponent']) + ); + + $RSAPublicKey = pack( + 'Ca*a*a*', + 48, + $this->_encodeASN1Length(strlen($components['modulus']) + strlen($components['publicExponent'])), + $components['modulus'], + $components['publicExponent'] + ); + + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPublicKey = chr(0) . $RSAPublicKey; + $RSAPublicKey = chr(3) . $this->_encodeASN1Length(strlen($RSAPublicKey)) . $RSAPublicKey; + + $encapsulated = pack( + 'Ca*a*', + 48, + $this->_encodeASN1Length(strlen($rsaOID . $RSAPublicKey)), + $rsaOID . $RSAPublicKey + ); + + $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($encapsulated)) . + '-----END PUBLIC KEY-----'; + + $plaintext = str_pad($this->toBytes(), strlen($n->toBytes(true)) - 1, "\0", STR_PAD_LEFT); + + if (openssl_public_encrypt($plaintext, $result, $RSAPublicKey, OPENSSL_NO_PADDING)) { + return new Math_BigInteger($result, 256); + } + } + + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH) { + $temp = new Math_BigInteger(); + $temp->value = bcpowmod($this->value, $e->value, $n->value, 0); + + return $this->_normalize($temp); + } + + if (empty($e->value)) { + $temp = new Math_BigInteger(); + $temp->value = array(1); + return $this->_normalize($temp); + } + + if ($e->value == array(1)) { + list(, $temp) = $this->divide($n); + return $this->_normalize($temp); + } + + if ($e->value == array(2)) { + $temp = new Math_BigInteger(); + $temp->value = $this->_square($this->value); + list(, $temp) = $temp->divide($n); + return $this->_normalize($temp); + } + + return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_BARRETT)); + + // the following code, although not callable, can be run independently of the above code + // although the above code performed better in my benchmarks the following could might + // perform better under different circumstances. in lieu of deleting it it's just been + // made uncallable + + // is the modulo odd? + if ($n->value[0] & 1) { + return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_MONTGOMERY)); + } + // if it's not, it's even + + // find the lowest set bit (eg. the max pow of 2 that divides $n) + for ($i = 0; $i < count($n->value); ++$i) { + if ($n->value[$i]) { + $temp = decbin($n->value[$i]); + $j = strlen($temp) - strrpos($temp, '1') - 1; + $j+= 26 * $i; + break; + } + } + // at this point, 2^$j * $n/(2^$j) == $n + + $mod1 = $n->copy(); + $mod1->_rshift($j); + $mod2 = new Math_BigInteger(); + $mod2->value = array(1); + $mod2->_lshift($j); + + $part1 = ($mod1->value != array(1)) ? $this->_slidingWindow($e, $mod1, MATH_BIGINTEGER_MONTGOMERY) : new Math_BigInteger(); + $part2 = $this->_slidingWindow($e, $mod2, MATH_BIGINTEGER_POWEROF2); + + $y1 = $mod2->modInverse($mod1); + $y2 = $mod1->modInverse($mod2); + + $result = $part1->multiply($mod2); + $result = $result->multiply($y1); + + $temp = $part2->multiply($mod1); + $temp = $temp->multiply($y2); + + $result = $result->add($temp); + list(, $result) = $result->divide($n); + + return $this->_normalize($result); + } + + /** + * Performs modular exponentiation. + * + * Alias for Math_BigInteger::modPow() + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + */ + function powMod($e, $n) + { + return $this->modPow($e, $n); + } + + /** + * Sliding Window k-ary Modular Exponentiation + * + * Based on {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=27 HAC 14.85} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=210 MPM 7.7}. In a departure from those algorithims, + * however, this function performs a modular reduction after every multiplication and squaring operation. + * As such, this function has the same preconditions that the reductions being used do. + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @param int $mode + * @return Math_BigInteger + * @access private + */ + function _slidingWindow($e, $n, $mode) + { + static $window_ranges = array(7, 25, 81, 241, 673, 1793); // from BigInteger.java's oddModPow function + //static $window_ranges = array(0, 7, 36, 140, 450, 1303, 3529); // from MPM 7.3.1 + + $e_value = $e->value; + $e_length = count($e_value) - 1; + $e_bits = decbin($e_value[$e_length]); + for ($i = $e_length - 1; $i >= 0; --$i) { + $e_bits.= str_pad(decbin($e_value[$i]), MATH_BIGINTEGER_BASE, '0', STR_PAD_LEFT); + } + + $e_length = strlen($e_bits); + + // calculate the appropriate window size. + // $window_size == 3 if $window_ranges is between 25 and 81, for example. + for ($i = 0, $window_size = 1; $i < count($window_ranges) && $e_length > $window_ranges[$i]; ++$window_size, ++$i) { + } + + $n_value = $n->value; + + // precompute $this^0 through $this^$window_size + $powers = array(); + $powers[1] = $this->_prepareReduce($this->value, $n_value, $mode); + $powers[2] = $this->_squareReduce($powers[1], $n_value, $mode); + + // we do every other number since substr($e_bits, $i, $j+1) (see below) is supposed to end + // in a 1. ie. it's supposed to be odd. + $temp = 1 << ($window_size - 1); + for ($i = 1; $i < $temp; ++$i) { + $i2 = $i << 1; + $powers[$i2 + 1] = $this->_multiplyReduce($powers[$i2 - 1], $powers[2], $n_value, $mode); + } + + $result = array(1); + $result = $this->_prepareReduce($result, $n_value, $mode); + + for ($i = 0; $i < $e_length;) { + if (!$e_bits[$i]) { + $result = $this->_squareReduce($result, $n_value, $mode); + ++$i; + } else { + for ($j = $window_size - 1; $j > 0; --$j) { + if (!empty($e_bits[$i + $j])) { + break; + } + } + + // eg. the length of substr($e_bits, $i, $j + 1) + for ($k = 0; $k <= $j; ++$k) { + $result = $this->_squareReduce($result, $n_value, $mode); + } + + $result = $this->_multiplyReduce($result, $powers[bindec(substr($e_bits, $i, $j + 1))], $n_value, $mode); + + $i += $j + 1; + } + } + + $temp = new Math_BigInteger(); + $temp->value = $this->_reduce($result, $n_value, $mode); + + return $temp; + } + + /** + * Modular reduction + * + * For most $modes this will return the remainder. + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @param int $mode + * @return array + */ + function _reduce($x, $n, $mode) + { + switch ($mode) { + case MATH_BIGINTEGER_MONTGOMERY: + return $this->_montgomery($x, $n); + case MATH_BIGINTEGER_BARRETT: + return $this->_barrett($x, $n); + case MATH_BIGINTEGER_POWEROF2: + $lhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + return $x->_mod2($n); + case MATH_BIGINTEGER_CLASSIC: + $lhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + case MATH_BIGINTEGER_NONE: + return $x; + default: + // an invalid $mode was provided + } + } + + /** + * Modular reduction preperation + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @param int $mode + * @return array + */ + function _prepareReduce($x, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_prepMontgomery($x, $n); + } + return $this->_reduce($x, $n, $mode); + } + + /** + * Modular multiply + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $y + * @param array $n + * @param int $mode + * @return array + */ + function _multiplyReduce($x, $y, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_montgomeryMultiply($x, $y, $n); + } + $temp = $this->_multiply($x, false, $y, false); + return $this->_reduce($temp[MATH_BIGINTEGER_VALUE], $n, $mode); + } + + /** + * Modular square + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @param int $mode + * @return array + */ + function _squareReduce($x, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_montgomeryMultiply($x, $x, $n); + } + return $this->_reduce($this->_square($x), $n, $mode); + } + + /** + * Modulos for Powers of Two + * + * Calculates $x%$n, where $n = 2**$e, for some $e. Since this is basically the same as doing $x & ($n-1), + * we'll just use this function as a wrapper for doing that. + * + * @see self::_slidingWindow() + * @access private + * @param Math_BigInteger $n + * @return Math_BigInteger + */ + function _mod2($n) + { + $temp = new Math_BigInteger(); + $temp->value = array(1); + return $this->bitwise_and($n->subtract($temp)); + } + + /** + * Barrett Modular Reduction + * + * See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=14 HAC 14.3.3} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=165 MPM 6.2.5} for more information. Modified slightly, + * so as not to require negative numbers (initially, this script didn't support negative numbers). + * + * Employs "folding", as described at + * {@link http://www.cosic.esat.kuleuven.be/publications/thesis-149.pdf#page=66 thesis-149.pdf#page=66}. To quote from + * it, "the idea [behind folding] is to find a value x' such that x (mod m) = x' (mod m), with x' being smaller than x." + * + * Unfortunately, the "Barrett Reduction with Folding" algorithm described in thesis-149.pdf is not, as written, all that + * usable on account of (1) its not using reasonable radix points as discussed in + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=162 MPM 6.2.2} and (2) the fact that, even with reasonable + * radix points, it only works when there are an even number of digits in the denominator. The reason for (2) is that + * (x >> 1) + (x >> 1) != x / 2 + x / 2. If x is even, they're the same, but if x is odd, they're not. See the in-line + * comments for details. + * + * @see self::_slidingWindow() + * @access private + * @param array $n + * @param array $m + * @return array + */ + function _barrett($n, $m) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + $m_length = count($m); + + // if ($this->_compare($n, $this->_square($m)) >= 0) { + if (count($n) > 2 * $m_length) { + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + $lhs->value = $n; + $rhs->value = $m; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + // if (m.length >> 1) + 2 <= m.length then m is too small and n can't be reduced + if ($m_length < 5) { + return $this->_regularBarrett($n, $m); + } + + // n = 2 * m.length + + if (($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $m; + + $lhs = new Math_BigInteger(); + $lhs_value = &$lhs->value; + $lhs_value = $this->_array_repeat(0, $m_length + ($m_length >> 1)); + $lhs_value[] = 1; + $rhs = new Math_BigInteger(); + $rhs->value = $m; + + list($u, $m1) = $lhs->divide($rhs); + $u = $u->value; + $m1 = $m1->value; + + $cache[MATH_BIGINTEGER_DATA][] = array( + 'u' => $u, // m.length >> 1 (technically (m.length >> 1) + 1) + 'm1'=> $m1 // m.length + ); + } else { + extract($cache[MATH_BIGINTEGER_DATA][$key]); + } + + $cutoff = $m_length + ($m_length >> 1); + $lsd = array_slice($n, 0, $cutoff); // m.length + (m.length >> 1) + $msd = array_slice($n, $cutoff); // m.length >> 1 + $lsd = $this->_trim($lsd); + $temp = $this->_multiply($msd, false, $m1, false); + $n = $this->_add($lsd, false, $temp[MATH_BIGINTEGER_VALUE], false); // m.length + (m.length >> 1) + 1 + + if ($m_length & 1) { + return $this->_regularBarrett($n[MATH_BIGINTEGER_VALUE], $m); + } + + // (m.length + (m.length >> 1) + 1) - (m.length - 1) == (m.length >> 1) + 2 + $temp = array_slice($n[MATH_BIGINTEGER_VALUE], $m_length - 1); + // if even: ((m.length >> 1) + 2) + (m.length >> 1) == m.length + 2 + // if odd: ((m.length >> 1) + 2) + (m.length >> 1) == (m.length - 1) + 2 == m.length + 1 + $temp = $this->_multiply($temp, false, $u, false); + // if even: (m.length + 2) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + 1 + // if odd: (m.length + 1) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], ($m_length >> 1) + 1); + // if even: (m.length - (m.length >> 1) + 1) + m.length = 2 * m.length - (m.length >> 1) + 1 + // if odd: (m.length - (m.length >> 1)) + m.length = 2 * m.length - (m.length >> 1) + $temp = $this->_multiply($temp, false, $m, false); + + // at this point, if m had an odd number of digits, we'd be subtracting a 2 * m.length - (m.length >> 1) digit + // number from a m.length + (m.length >> 1) + 1 digit number. ie. there'd be an extra digit and the while loop + // following this comment would loop a lot (hence our calling _regularBarrett() in that situation). + + $result = $this->_subtract($n[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false); + + while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false) >= 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * (Regular) Barrett Modular Reduction + * + * For numbers with more than four digits Math_BigInteger::_barrett() is faster. The difference between that and this + * is that this function does not fold the denominator into a smaller form. + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @return array + */ + function _regularBarrett($x, $n) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + $n_length = count($n); + + if (count($x) > 2 * $n_length) { + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs->value = $n; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + if (($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $n; + $lhs = new Math_BigInteger(); + $lhs_value = &$lhs->value; + $lhs_value = $this->_array_repeat(0, 2 * $n_length); + $lhs_value[] = 1; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + list($temp, ) = $lhs->divide($rhs); // m.length + $cache[MATH_BIGINTEGER_DATA][] = $temp->value; + } + + // 2 * m.length - (m.length - 1) = m.length + 1 + $temp = array_slice($x, $n_length - 1); + // (m.length + 1) + m.length = 2 * m.length + 1 + $temp = $this->_multiply($temp, false, $cache[MATH_BIGINTEGER_DATA][$key], false); + // (2 * m.length + 1) - (m.length - 1) = m.length + 2 + $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], $n_length + 1); + + // m.length + 1 + $result = array_slice($x, 0, $n_length + 1); + // m.length + 1 + $temp = $this->_multiplyLower($temp, false, $n, false, $n_length + 1); + // $temp == array_slice($temp->_multiply($temp, false, $n, false)->value, 0, $n_length + 1) + + if ($this->_compare($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]) < 0) { + $corrector_value = $this->_array_repeat(0, $n_length + 1); + $corrector_value[count($corrector_value)] = 1; + $result = $this->_add($result, false, $corrector_value, false); + $result = $result[MATH_BIGINTEGER_VALUE]; + } + + // at this point, we're subtracting a number with m.length + 1 digits from another number with m.length + 1 digits + $result = $this->_subtract($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]); + while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false) > 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * Performs long multiplication up to $stop digits + * + * If you're going to be doing array_slice($product->value, 0, $stop), some cycles can be saved. + * + * @see self::_regularBarrett() + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @param int $stop + * @return array + * @access private + */ + function _multiplyLower($x_value, $x_negative, $y_value, $y_negative, $stop) + { + $x_length = count($x_value); + $y_length = count($y_value); + + if (!$x_length || !$y_length) { // a 0 is being multiplied + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + if ($x_length < $y_length) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_length = count($x_value); + $y_length = count($y_value); + } + + $product_value = $this->_array_repeat(0, $x_length + $y_length); + + // the following for loop could be removed if the for loop following it + // (the one with nested for loops) initially set $i to 0, but + // doing so would also make the result in one set of unnecessary adds, + // since on the outermost loops first pass, $product->value[$k] is going + // to always be 0 + + $carry = 0; + + for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0, $k = $i + $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0 + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$j] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + if ($j < $stop) { + $product_value[$j] = $carry; + } + + // the above for loop is what the previous comment was talking about. the + // following for loop is the "one with nested for loops" + + for ($i = 1; $i < $y_length; ++$i) { + $carry = 0; + + for ($j = 0, $k = $i; $j < $x_length && $k < $stop; ++$j, ++$k) { + $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$k] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + if ($k < $stop) { + $product_value[$k] = $carry; + } + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($product_value), + MATH_BIGINTEGER_SIGN => $x_negative != $y_negative + ); + } + + /** + * Montgomery Modular Reduction + * + * ($x->_prepMontgomery($n))->_montgomery($n) yields $x % $n. + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=170 MPM 6.3} provides insights on how this can be + * improved upon (basically, by using the comba method). gcd($n, 2) must be equal to one for this function + * to work correctly. + * + * @see self::_prepMontgomery() + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @return array + */ + function _montgomery($x, $n) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + if (($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $x; + $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($n); + } + + $k = count($n); + + $result = array(MATH_BIGINTEGER_VALUE => $x); + + for ($i = 0; $i < $k; ++$i) { + $temp = $result[MATH_BIGINTEGER_VALUE][$i] * $cache[MATH_BIGINTEGER_DATA][$key]; + $temp = $temp - MATH_BIGINTEGER_BASE_FULL * (MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31)); + $temp = $this->_regularMultiply(array($temp), $n); + $temp = array_merge($this->_array_repeat(0, $i), $temp); + $result = $this->_add($result[MATH_BIGINTEGER_VALUE], false, $temp, false); + } + + $result[MATH_BIGINTEGER_VALUE] = array_slice($result[MATH_BIGINTEGER_VALUE], $k); + + if ($this->_compare($result, false, $n, false) >= 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], false, $n, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * Montgomery Multiply + * + * Interleaves the montgomery reduction and long multiplication algorithms together as described in + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=13 HAC 14.36} + * + * @see self::_prepMontgomery() + * @see self::_montgomery() + * @access private + * @param array $x + * @param array $y + * @param array $m + * @return array + */ + function _montgomeryMultiply($x, $y, $m) + { + $temp = $this->_multiply($x, false, $y, false); + return $this->_montgomery($temp[MATH_BIGINTEGER_VALUE], $m); + + // the following code, although not callable, can be run independently of the above code + // although the above code performed better in my benchmarks the following could might + // perform better under different circumstances. in lieu of deleting it it's just been + // made uncallable + + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + if (($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $m; + $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($m); + } + + $n = max(count($x), count($y), count($m)); + $x = array_pad($x, $n, 0); + $y = array_pad($y, $n, 0); + $m = array_pad($m, $n, 0); + $a = array(MATH_BIGINTEGER_VALUE => $this->_array_repeat(0, $n + 1)); + for ($i = 0; $i < $n; ++$i) { + $temp = $a[MATH_BIGINTEGER_VALUE][0] + $x[$i] * $y[0]; + $temp = $temp - MATH_BIGINTEGER_BASE_FULL * (MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31)); + $temp = $temp * $cache[MATH_BIGINTEGER_DATA][$key]; + $temp = $temp - MATH_BIGINTEGER_BASE_FULL * (MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31)); + $temp = $this->_add($this->_regularMultiply(array($x[$i]), $y), false, $this->_regularMultiply(array($temp), $m), false); + $a = $this->_add($a[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false); + $a[MATH_BIGINTEGER_VALUE] = array_slice($a[MATH_BIGINTEGER_VALUE], 1); + } + if ($this->_compare($a[MATH_BIGINTEGER_VALUE], false, $m, false) >= 0) { + $a = $this->_subtract($a[MATH_BIGINTEGER_VALUE], false, $m, false); + } + return $a[MATH_BIGINTEGER_VALUE]; + } + + /** + * Prepare a number for use in Montgomery Modular Reductions + * + * @see self::_montgomery() + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @return array + */ + function _prepMontgomery($x, $n) + { + $lhs = new Math_BigInteger(); + $lhs->value = array_merge($this->_array_repeat(0, count($n)), $x); + $rhs = new Math_BigInteger(); + $rhs->value = $n; + + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + /** + * Modular Inverse of a number mod 2**26 (eg. 67108864) + * + * Based off of the bnpInvDigit function implemented and justified in the following URL: + * + * {@link http://www-cs-students.stanford.edu/~tjw/jsbn/jsbn.js} + * + * The following URL provides more info: + * + * {@link http://groups.google.com/group/sci.crypt/msg/7a137205c1be7d85} + * + * As for why we do all the bitmasking... strange things can happen when converting from floats to ints. For + * instance, on some computers, var_dump((int) -4294967297) yields int(-1) and on others, it yields + * int(-2147483648). To avoid problems stemming from this, we use bitmasks to guarantee that ints aren't + * auto-converted to floats. The outermost bitmask is present because without it, there's no guarantee that + * the "residue" returned would be the so-called "common residue". We use fmod, in the last step, because the + * maximum possible $x is 26 bits and the maximum $result is 16 bits. Thus, we have to be able to handle up to + * 40 bits, which only 64-bit floating points will support. + * + * Thanks to Pedro Gimeno Fortea for input! + * + * @see self::_montgomery() + * @access private + * @param array $x + * @return int + */ + function _modInverse67108864($x) // 2**26 == 67,108,864 + { + $x = -$x[0]; + $result = $x & 0x3; // x**-1 mod 2**2 + $result = ($result * (2 - $x * $result)) & 0xF; // x**-1 mod 2**4 + $result = ($result * (2 - ($x & 0xFF) * $result)) & 0xFF; // x**-1 mod 2**8 + $result = ($result * ((2 - ($x & 0xFFFF) * $result) & 0xFFFF)) & 0xFFFF; // x**-1 mod 2**16 + $result = fmod($result * (2 - fmod($x * $result, MATH_BIGINTEGER_BASE_FULL)), MATH_BIGINTEGER_BASE_FULL); // x**-1 mod 2**26 + return $result & MATH_BIGINTEGER_MAX_DIGIT; + } + + /** + * Calculates modular inverses. + * + * Say you have (30 mod 17 * x mod 17) mod 17 == 1. x can be found using modular inverses. + * + * Here's an example: + * + * modInverse($b); + * echo $c->toString(); // outputs 4 + * + * echo "\r\n"; + * + * $d = $a->multiply($c); + * list(, $d) = $d->divide($b); + * echo $d; // outputs 1 (as per the definition of modular inverse) + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger|false + * @access public + * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=21 HAC 14.64} for more information. + */ + function modInverse($n) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_invert($this->value, $n->value); + + return ($temp->value === false) ? false : $this->_normalize($temp); + } + + static $zero, $one; + if (!isset($zero)) { + $zero = new Math_BigInteger(); + $one = new Math_BigInteger(1); + } + + // $x mod -$n == $x mod $n. + $n = $n->abs(); + + if ($this->compare($zero) < 0) { + $temp = $this->abs(); + $temp = $temp->modInverse($n); + return $this->_normalize($n->subtract($temp)); + } + + extract($this->extendedGCD($n)); + + if (!$gcd->equals($one)) { + return false; + } + + $x = $x->compare($zero) < 0 ? $x->add($n) : $x; + + return $this->compare($zero) < 0 ? $this->_normalize($n->subtract($x)) : $this->_normalize($x); + } + + /** + * Calculates the greatest common divisor and Bezout's identity. + * + * Say you have 693 and 609. The GCD is 21. Bezout's identity states that there exist integers x and y such that + * 693*x + 609*y == 21. In point of fact, there are actually an infinite number of x and y combinations and which + * combination is returned is dependent upon which mode is in use. See + * {@link http://en.wikipedia.org/wiki/B%C3%A9zout%27s_identity Bezout's identity - Wikipedia} for more information. + * + * Here's an example: + * + * extendedGCD($b)); + * + * echo $gcd->toString() . "\r\n"; // outputs 21 + * echo $a->toString() * $x->toString() + $b->toString() * $y->toString(); // outputs 21 + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + * @internal Calculates the GCD using the binary xGCD algorithim described in + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=19 HAC 14.61}. As the text above 14.61 notes, + * the more traditional algorithim requires "relatively costly multiple-precision divisions". + */ + function extendedGCD($n) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + extract(gmp_gcdext($this->value, $n->value)); + + return array( + 'gcd' => $this->_normalize(new Math_BigInteger($g)), + 'x' => $this->_normalize(new Math_BigInteger($s)), + 'y' => $this->_normalize(new Math_BigInteger($t)) + ); + case MATH_BIGINTEGER_MODE_BCMATH: + // it might be faster to use the binary xGCD algorithim here, as well, but (1) that algorithim works + // best when the base is a power of 2 and (2) i don't think it'd make much difference, anyway. as is, + // the basic extended euclidean algorithim is what we're using. + + $u = $this->value; + $v = $n->value; + + $a = '1'; + $b = '0'; + $c = '0'; + $d = '1'; + + while (bccomp($v, '0', 0) != 0) { + $q = bcdiv($u, $v, 0); + + $temp = $u; + $u = $v; + $v = bcsub($temp, bcmul($v, $q, 0), 0); + + $temp = $a; + $a = $c; + $c = bcsub($temp, bcmul($a, $q, 0), 0); + + $temp = $b; + $b = $d; + $d = bcsub($temp, bcmul($b, $q, 0), 0); + } + + return array( + 'gcd' => $this->_normalize(new Math_BigInteger($u)), + 'x' => $this->_normalize(new Math_BigInteger($a)), + 'y' => $this->_normalize(new Math_BigInteger($b)) + ); + } + + $y = $n->copy(); + $x = $this->copy(); + $g = new Math_BigInteger(); + $g->value = array(1); + + while (!(($x->value[0] & 1)|| ($y->value[0] & 1))) { + $x->_rshift(1); + $y->_rshift(1); + $g->_lshift(1); + } + + $u = $x->copy(); + $v = $y->copy(); + + $a = new Math_BigInteger(); + $b = new Math_BigInteger(); + $c = new Math_BigInteger(); + $d = new Math_BigInteger(); + + $a->value = $d->value = $g->value = array(1); + $b->value = $c->value = array(); + + while (!empty($u->value)) { + while (!($u->value[0] & 1)) { + $u->_rshift(1); + if ((!empty($a->value) && ($a->value[0] & 1)) || (!empty($b->value) && ($b->value[0] & 1))) { + $a = $a->add($y); + $b = $b->subtract($x); + } + $a->_rshift(1); + $b->_rshift(1); + } + + while (!($v->value[0] & 1)) { + $v->_rshift(1); + if ((!empty($d->value) && ($d->value[0] & 1)) || (!empty($c->value) && ($c->value[0] & 1))) { + $c = $c->add($y); + $d = $d->subtract($x); + } + $c->_rshift(1); + $d->_rshift(1); + } + + if ($u->compare($v) >= 0) { + $u = $u->subtract($v); + $a = $a->subtract($c); + $b = $b->subtract($d); + } else { + $v = $v->subtract($u); + $c = $c->subtract($a); + $d = $d->subtract($b); + } + } + + return array( + 'gcd' => $this->_normalize($g->multiply($v)), + 'x' => $this->_normalize($c), + 'y' => $this->_normalize($d) + ); + } + + /** + * Calculates the greatest common divisor + * + * Say you have 693 and 609. The GCD is 21. + * + * Here's an example: + * + * extendedGCD($b); + * + * echo $gcd->toString() . "\r\n"; // outputs 21 + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + */ + function gcd($n) + { + extract($this->extendedGCD($n)); + return $gcd; + } + + /** + * Absolute value. + * + * @return Math_BigInteger + * @access public + */ + function abs() + { + $temp = new Math_BigInteger(); + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp->value = gmp_abs($this->value); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = (bccomp($this->value, '0', 0) < 0) ? substr($this->value, 1) : $this->value; + break; + default: + $temp->value = $this->value; + } + + return $temp; + } + + /** + * Compares two numbers. + * + * Although one might think !$x->compare($y) means $x != $y, it, in fact, means the opposite. The reason for this is + * demonstrated thusly: + * + * $x > $y: $x->compare($y) > 0 + * $x < $y: $x->compare($y) < 0 + * $x == $y: $x->compare($y) == 0 + * + * Note how the same comparison operator is used. If you want to test for equality, use $x->equals($y). + * + * @param Math_BigInteger $y + * @return int < 0 if $this is less than $y; > 0 if $this is greater than $y, and 0 if they are equal. + * @access public + * @see self::equals() + * @internal Could return $this->subtract($x), but that's not as fast as what we do do. + */ + function compare($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $r = gmp_cmp($this->value, $y->value); + if ($r < -1) { + $r = -1; + } + if ($r > 1) { + $r = 1; + } + return $r; + case MATH_BIGINTEGER_MODE_BCMATH: + return bccomp($this->value, $y->value, 0); + } + + return $this->_compare($this->value, $this->is_negative, $y->value, $y->is_negative); + } + + /** + * Compares two numbers. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return int + * @see self::compare() + * @access private + */ + function _compare($x_value, $x_negative, $y_value, $y_negative) + { + if ($x_negative != $y_negative) { + return (!$x_negative && $y_negative) ? 1 : -1; + } + + $result = $x_negative ? -1 : 1; + + if (count($x_value) != count($y_value)) { + return (count($x_value) > count($y_value)) ? $result : -$result; + } + $size = max(count($x_value), count($y_value)); + + $x_value = array_pad($x_value, $size, 0); + $y_value = array_pad($y_value, $size, 0); + + for ($i = count($x_value) - 1; $i >= 0; --$i) { + if ($x_value[$i] != $y_value[$i]) { + return ($x_value[$i] > $y_value[$i]) ? $result : -$result; + } + } + + return 0; + } + + /** + * Tests the equality of two numbers. + * + * If you need to see if one number is greater than or less than another number, use Math_BigInteger::compare() + * + * @param Math_BigInteger $x + * @return bool + * @access public + * @see self::compare() + */ + function equals($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_cmp($this->value, $x->value) == 0; + default: + return $this->value === $x->value && $this->is_negative == $x->is_negative; + } + } + + /** + * Set Precision + * + * Some bitwise operations give different results depending on the precision being used. Examples include left + * shift, not, and rotates. + * + * @param int $bits + * @access public + */ + function setPrecision($bits) + { + $this->precision = $bits; + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH) { + $this->bitmask = new Math_BigInteger(chr((1 << ($bits & 0x7)) - 1) . str_repeat(chr(0xFF), $bits >> 3), 256); + } else { + $this->bitmask = new Math_BigInteger(bcpow('2', $bits, 0)); + } + + $temp = $this->_normalize($this); + $this->value = $temp->value; + } + + /** + * Logical And + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_and($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_and($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left & $right, 256)); + } + + $result = $this->copy(); + + $length = min(count($x->value), count($this->value)); + + $result->value = array_slice($result->value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i]&= $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Or + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_or($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_or($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left | $right, 256)); + } + + $length = max(count($this->value), count($x->value)); + $result = $this->copy(); + $result->value = array_pad($result->value, $length, 0); + $x->value = array_pad($x->value, $length, 0); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i]|= $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Exclusive-Or + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_xor($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_xor(gmp_abs($this->value), gmp_abs($x->value)); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left ^ $right, 256)); + } + + $length = max(count($this->value), count($x->value)); + $result = $this->copy(); + $result->is_negative = false; + $result->value = array_pad($result->value, $length, 0); + $x->value = array_pad($x->value, $length, 0); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i]^= $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Not + * + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_not() + { + // calculuate "not" without regard to $this->precision + // (will always result in a smaller number. ie. ~1 isn't 1111 1110 - it's 0) + $temp = $this->toBytes(); + if ($temp == '') { + return $this->_normalize(new Math_BigInteger()); + } + $pre_msb = decbin(ord($temp[0])); + $temp = ~$temp; + $msb = decbin(ord($temp[0])); + if (strlen($msb) == 8) { + $msb = substr($msb, strpos($msb, '0')); + } + $temp[0] = chr(bindec($msb)); + + // see if we need to add extra leading 1's + $current_bits = strlen($pre_msb) + 8 * strlen($temp) - 8; + $new_bits = $this->precision - $current_bits; + if ($new_bits <= 0) { + return $this->_normalize(new Math_BigInteger($temp, 256)); + } + + // generate as many leading 1's as we need to. + $leading_ones = chr((1 << ($new_bits & 0x7)) - 1) . str_repeat(chr(0xFF), $new_bits >> 3); + $this->_base256_lshift($leading_ones, $current_bits); + + $temp = str_pad($temp, strlen($leading_ones), chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($leading_ones | $temp, 256)); + } + + /** + * Logical Right Shift + * + * Shifts BigInteger's by $shift bits, effectively dividing by 2**$shift. + * + * @param int $shift + * @return Math_BigInteger + * @access public + * @internal The only version that yields any speed increases is the internal version. + */ + function bitwise_rightShift($shift) + { + $temp = new Math_BigInteger(); + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + static $two; + + if (!isset($two)) { + $two = gmp_init('2'); + } + + $temp->value = gmp_div_q($this->value, gmp_pow($two, $shift)); + + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = bcdiv($this->value, bcpow('2', $shift, 0), 0); + + break; + default: // could just replace _lshift with this, but then all _lshift() calls would need to be rewritten + // and I don't want to do that... + $temp->value = $this->value; + $temp->_rshift($shift); + } + + return $this->_normalize($temp); + } + + /** + * Logical Left Shift + * + * Shifts BigInteger's by $shift bits, effectively multiplying by 2**$shift. + * + * @param int $shift + * @return Math_BigInteger + * @access public + * @internal The only version that yields any speed increases is the internal version. + */ + function bitwise_leftShift($shift) + { + $temp = new Math_BigInteger(); + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + static $two; + + if (!isset($two)) { + $two = gmp_init('2'); + } + + $temp->value = gmp_mul($this->value, gmp_pow($two, $shift)); + + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = bcmul($this->value, bcpow('2', $shift, 0), 0); + + break; + default: // could just replace _rshift with this, but then all _lshift() calls would need to be rewritten + // and I don't want to do that... + $temp->value = $this->value; + $temp->_lshift($shift); + } + + return $this->_normalize($temp); + } + + /** + * Logical Left Rotate + * + * Instead of the top x bits being dropped they're appended to the shifted bit string. + * + * @param int $shift + * @return Math_BigInteger + * @access public + */ + function bitwise_leftRotate($shift) + { + $bits = $this->toBytes(); + + if ($this->precision > 0) { + $precision = $this->precision; + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH) { + $mask = $this->bitmask->subtract(new Math_BigInteger(1)); + $mask = $mask->toBytes(); + } else { + $mask = $this->bitmask->toBytes(); + } + } else { + $temp = ord($bits[0]); + for ($i = 0; $temp >> $i; ++$i) { + } + $precision = 8 * strlen($bits) - 8 + $i; + $mask = chr((1 << ($precision & 0x7)) - 1) . str_repeat(chr(0xFF), $precision >> 3); + } + + if ($shift < 0) { + $shift+= $precision; + } + $shift%= $precision; + + if (!$shift) { + return $this->copy(); + } + + $left = $this->bitwise_leftShift($shift); + $left = $left->bitwise_and(new Math_BigInteger($mask, 256)); + $right = $this->bitwise_rightShift($precision - $shift); + $result = MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH ? $left->bitwise_or($right) : $left->add($right); + return $this->_normalize($result); + } + + /** + * Logical Right Rotate + * + * Instead of the bottom x bits being dropped they're prepended to the shifted bit string. + * + * @param int $shift + * @return Math_BigInteger + * @access public + */ + function bitwise_rightRotate($shift) + { + return $this->bitwise_leftRotate(-$shift); + } + + /** + * Set random number generator function + * + * This function is deprecated. + * + * @param string $generator + * @access public + */ + function setRandomGenerator($generator) + { + } + + /** + * Generates a random BigInteger + * + * Byte length is equal to $length. Uses crypt_random if it's loaded and mt_rand if it's not. + * + * @param int $size + * @return Math_BigInteger + * @access private + */ + function _random_number_helper($size) + { + if (function_exists('crypt_random_string')) { + $random = crypt_random_string($size); + } else { + $random = ''; + + if ($size & 1) { + $random.= chr(mt_rand(0, 255)); + } + + $blocks = $size >> 1; + for ($i = 0; $i < $blocks; ++$i) { + // mt_rand(-2147483648, 0x7FFFFFFF) always produces -2147483648 on some systems + $random.= pack('n', mt_rand(0, 0xFFFF)); + } + } + + return new Math_BigInteger($random, 256); + } + + /** + * Generate a random number + * + * Returns a random number between $min and $max where $min and $max + * can be defined using one of the two methods: + * + * $min->random($max) + * $max->random($min) + * + * @param Math_BigInteger $arg1 + * @param Math_BigInteger $arg2 + * @return Math_BigInteger + * @access public + * @internal The API for creating random numbers used to be $a->random($min, $max), where $a was a Math_BigInteger object. + * That method is still supported for BC purposes. + */ + function random($arg1, $arg2 = false) + { + if ($arg1 === false) { + return false; + } + + if ($arg2 === false) { + $max = $arg1; + $min = $this; + } else { + $min = $arg1; + $max = $arg2; + } + + $compare = $max->compare($min); + + if (!$compare) { + return $this->_normalize($min); + } elseif ($compare < 0) { + // if $min is bigger then $max, swap $min and $max + $temp = $max; + $max = $min; + $min = $temp; + } + + static $one; + if (!isset($one)) { + $one = new Math_BigInteger(1); + } + + $max = $max->subtract($min->subtract($one)); + $size = strlen(ltrim($max->toBytes(), chr(0))); + + /* + doing $random % $max doesn't work because some numbers will be more likely to occur than others. + eg. if $max is 140 and $random's max is 255 then that'd mean both $random = 5 and $random = 145 + would produce 5 whereas the only value of random that could produce 139 would be 139. ie. + not all numbers would be equally likely. some would be more likely than others. + + creating a whole new random number until you find one that is within the range doesn't work + because, for sufficiently small ranges, the likelihood that you'd get a number within that range + would be pretty small. eg. with $random's max being 255 and if your $max being 1 the probability + would be pretty high that $random would be greater than $max. + + phpseclib works around this using the technique described here: + + http://crypto.stackexchange.com/questions/5708/creating-a-small-number-from-a-cryptographically-secure-random-string + */ + $random_max = new Math_BigInteger(chr(1) . str_repeat("\0", $size), 256); + $random = $this->_random_number_helper($size); + + list($max_multiple) = $random_max->divide($max); + $max_multiple = $max_multiple->multiply($max); + + while ($random->compare($max_multiple) >= 0) { + $random = $random->subtract($max_multiple); + $random_max = $random_max->subtract($max_multiple); + $random = $random->bitwise_leftShift(8); + $random = $random->add($this->_random_number_helper(1)); + $random_max = $random_max->bitwise_leftShift(8); + list($max_multiple) = $random_max->divide($max); + $max_multiple = $max_multiple->multiply($max); + } + list(, $random) = $random->divide($max); + + return $this->_normalize($random->add($min)); + } + + /** + * Generate a random prime number. + * + * If there's not a prime within the given range, false will be returned. + * If more than $timeout seconds have elapsed, give up and return false. + * + * @param Math_BigInteger $arg1 + * @param Math_BigInteger $arg2 + * @param int $timeout + * @return Math_BigInteger|false + * @access public + * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=15 HAC 4.44}. + */ + function randomPrime($arg1, $arg2 = false, $timeout = false) + { + if ($arg1 === false) { + return false; + } + + if ($arg2 === false) { + $max = $arg1; + $min = $this; + } else { + $min = $arg1; + $max = $arg2; + } + + $compare = $max->compare($min); + + if (!$compare) { + return $min->isPrime() ? $min : false; + } elseif ($compare < 0) { + // if $min is bigger then $max, swap $min and $max + $temp = $max; + $max = $min; + $min = $temp; + } + + static $one, $two; + if (!isset($one)) { + $one = new Math_BigInteger(1); + $two = new Math_BigInteger(2); + } + + $start = time(); + + $x = $this->random($min, $max); + + // gmp_nextprime() requires PHP 5 >= 5.2.0 per . + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP && extension_loaded('gmp') && version_compare(PHP_VERSION, '5.2.0', '>=')) { + $p = new Math_BigInteger(); + $p->value = gmp_nextprime($x->value); + + if ($p->compare($max) <= 0) { + return $p; + } + + if (!$min->equals($x)) { + $x = $x->subtract($one); + } + + return $x->randomPrime($min, $x); + } + + if ($x->equals($two)) { + return $x; + } + + $x->_make_odd(); + if ($x->compare($max) > 0) { + // if $x > $max then $max is even and if $min == $max then no prime number exists between the specified range + if ($min->equals($max)) { + return false; + } + $x = $min->copy(); + $x->_make_odd(); + } + + $initial_x = $x->copy(); + + while (true) { + if ($timeout !== false && time() - $start > $timeout) { + return false; + } + + if ($x->isPrime()) { + return $x; + } + + $x = $x->add($two); + + if ($x->compare($max) > 0) { + $x = $min->copy(); + if ($x->equals($two)) { + return $x; + } + $x->_make_odd(); + } + + if ($x->equals($initial_x)) { + return false; + } + } + } + + /** + * Make the current number odd + * + * If the current number is odd it'll be unchanged. If it's even, one will be added to it. + * + * @see self::randomPrime() + * @access private + */ + function _make_odd() + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + gmp_setbit($this->value, 0); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value[strlen($this->value) - 1] % 2 == 0) { + $this->value = bcadd($this->value, '1'); + } + break; + default: + $this->value[0] |= 1; + } + } + + /** + * Checks a numer to see if it's prime + * + * Assuming the $t parameter is not set, this function has an error rate of 2**-80. The main motivation for the + * $t parameter is distributability. Math_BigInteger::randomPrime() can be distributed across multiple pageloads + * on a website instead of just one. + * + * @param Math_BigInteger $t + * @return bool + * @access public + * @internal Uses the + * {@link http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test Miller-Rabin primality test}. See + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=8 HAC 4.24}. + */ + function isPrime($t = false) + { + $length = strlen($this->toBytes()); + + if (!$t) { + // see HAC 4.49 "Note (controlling the error probability)" + // @codingStandardsIgnoreStart + if ($length >= 163) { $t = 2; } // floor(1300 / 8) + else if ($length >= 106) { $t = 3; } // floor( 850 / 8) + else if ($length >= 81 ) { $t = 4; } // floor( 650 / 8) + else if ($length >= 68 ) { $t = 5; } // floor( 550 / 8) + else if ($length >= 56 ) { $t = 6; } // floor( 450 / 8) + else if ($length >= 50 ) { $t = 7; } // floor( 400 / 8) + else if ($length >= 43 ) { $t = 8; } // floor( 350 / 8) + else if ($length >= 37 ) { $t = 9; } // floor( 300 / 8) + else if ($length >= 31 ) { $t = 12; } // floor( 250 / 8) + else if ($length >= 25 ) { $t = 15; } // floor( 200 / 8) + else if ($length >= 18 ) { $t = 18; } // floor( 150 / 8) + else { $t = 27; } + // @codingStandardsIgnoreEnd + } + + // ie. gmp_testbit($this, 0) + // ie. isEven() or !isOdd() + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_prob_prime($this->value, $t) != 0; + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '2') { + return true; + } + if ($this->value[strlen($this->value) - 1] % 2 == 0) { + return false; + } + break; + default: + if ($this->value == array(2)) { + return true; + } + if (~$this->value[0] & 1) { + return false; + } + } + + static $primes, $zero, $one, $two; + + if (!isset($primes)) { + $primes = array( + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, + 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, + 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, + 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, + 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, + 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, + 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, + 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, + 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, + 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, + 953, 967, 971, 977, 983, 991, 997 + ); + + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + for ($i = 0; $i < count($primes); ++$i) { + $primes[$i] = new Math_BigInteger($primes[$i]); + } + } + + $zero = new Math_BigInteger(); + $one = new Math_BigInteger(1); + $two = new Math_BigInteger(2); + } + + if ($this->equals($one)) { + return false; + } + + // see HAC 4.4.1 "Random search for probable primes" + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + foreach ($primes as $prime) { + list(, $r) = $this->divide($prime); + if ($r->equals($zero)) { + return $this->equals($prime); + } + } + } else { + $value = $this->value; + foreach ($primes as $prime) { + list(, $r) = $this->_divide_digit($value, $prime); + if (!$r) { + return count($value) == 1 && $value[0] == $prime; + } + } + } + + $n = $this->copy(); + $n_1 = $n->subtract($one); + $n_2 = $n->subtract($two); + + $r = $n_1->copy(); + $r_value = $r->value; + // ie. $s = gmp_scan1($n, 0) and $r = gmp_div_q($n, gmp_pow(gmp_init('2'), $s)); + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH) { + $s = 0; + // if $n was 1, $r would be 0 and this would be an infinite loop, hence our $this->equals($one) check earlier + while ($r->value[strlen($r->value) - 1] % 2 == 0) { + $r->value = bcdiv($r->value, '2', 0); + ++$s; + } + } else { + for ($i = 0, $r_length = count($r_value); $i < $r_length; ++$i) { + $temp = ~$r_value[$i] & 0xFFFFFF; + for ($j = 1; ($temp >> $j) & 1; ++$j) { + } + if ($j != 25) { + break; + } + } + $s = 26 * $i + $j; + $r->_rshift($s); + } + + for ($i = 0; $i < $t; ++$i) { + $a = $this->random($two, $n_2); + $y = $a->modPow($r, $n); + + if (!$y->equals($one) && !$y->equals($n_1)) { + for ($j = 1; $j < $s && !$y->equals($n_1); ++$j) { + $y = $y->modPow($two, $n); + if ($y->equals($one)) { + return false; + } + } + + if (!$y->equals($n_1)) { + return false; + } + } + } + return true; + } + + /** + * Logical Left Shift + * + * Shifts BigInteger's by $shift bits. + * + * @param int $shift + * @access private + */ + function _lshift($shift) + { + if ($shift == 0) { + return; + } + + $num_digits = (int) ($shift / MATH_BIGINTEGER_BASE); + $shift %= MATH_BIGINTEGER_BASE; + $shift = 1 << $shift; + + $carry = 0; + + for ($i = 0; $i < count($this->value); ++$i) { + $temp = $this->value[$i] * $shift + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $this->value[$i] = (int) ($temp - $carry * MATH_BIGINTEGER_BASE_FULL); + } + + if ($carry) { + $this->value[count($this->value)] = $carry; + } + + while ($num_digits--) { + array_unshift($this->value, 0); + } + } + + /** + * Logical Right Shift + * + * Shifts BigInteger's by $shift bits. + * + * @param int $shift + * @access private + */ + function _rshift($shift) + { + if ($shift == 0) { + return; + } + + $num_digits = (int) ($shift / MATH_BIGINTEGER_BASE); + $shift %= MATH_BIGINTEGER_BASE; + $carry_shift = MATH_BIGINTEGER_BASE - $shift; + $carry_mask = (1 << $shift) - 1; + + if ($num_digits) { + $this->value = array_slice($this->value, $num_digits); + } + + $carry = 0; + + for ($i = count($this->value) - 1; $i >= 0; --$i) { + $temp = $this->value[$i] >> $shift | $carry; + $carry = ($this->value[$i] & $carry_mask) << $carry_shift; + $this->value[$i] = $temp; + } + + $this->value = $this->_trim($this->value); + } + + /** + * Normalize + * + * Removes leading zeros and truncates (if necessary) to maintain the appropriate precision + * + * @param Math_BigInteger $result + * @return Math_BigInteger + * @see self::_trim() + * @access private + */ + function _normalize($result) + { + $result->precision = $this->precision; + $result->bitmask = $this->bitmask; + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + if ($this->bitmask !== false) { + $flip = gmp_cmp($result->value, gmp_init(0)) < 0; + if ($flip) { + $result->value = gmp_neg($result->value); + } + $result->value = gmp_and($result->value, $result->bitmask->value); + if ($flip) { + $result->value = gmp_neg($result->value); + } + } + + return $result; + case MATH_BIGINTEGER_MODE_BCMATH: + if (!empty($result->bitmask->value)) { + $result->value = bcmod($result->value, $result->bitmask->value); + } + + return $result; + } + + $value = &$result->value; + + if (!count($value)) { + $result->is_negative = false; + return $result; + } + + $value = $this->_trim($value); + + if (!empty($result->bitmask->value)) { + $length = min(count($value), count($this->bitmask->value)); + $value = array_slice($value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $value[$i] = $value[$i] & $this->bitmask->value[$i]; + } + } + + return $result; + } + + /** + * Trim + * + * Removes leading zeros + * + * @param array $value + * @return Math_BigInteger + * @access private + */ + function _trim($value) + { + for ($i = count($value) - 1; $i >= 0; --$i) { + if ($value[$i]) { + break; + } + unset($value[$i]); + } + + return $value; + } + + /** + * Array Repeat + * + * @param array $input + * @param mixed $multiplier + * @return array + * @access private + */ + function _array_repeat($input, $multiplier) + { + return ($multiplier) ? array_fill(0, $multiplier, $input) : array(); + } + + /** + * Logical Left Shift + * + * Shifts binary strings $shift bits, essentially multiplying by 2**$shift. + * + * @param string $x (by reference) + * @param int $shift + * @return string + * @access private + */ + function _base256_lshift(&$x, $shift) + { + if ($shift == 0) { + return; + } + + $num_bytes = $shift >> 3; // eg. floor($shift/8) + $shift &= 7; // eg. $shift % 8 + + $carry = 0; + for ($i = strlen($x) - 1; $i >= 0; --$i) { + $temp = ord($x[$i]) << $shift | $carry; + $x[$i] = chr($temp); + $carry = $temp >> 8; + } + $carry = ($carry != 0) ? chr($carry) : ''; + $x = $carry . $x . str_repeat(chr(0), $num_bytes); + } + + /** + * Logical Right Shift + * + * Shifts binary strings $shift bits, essentially dividing by 2**$shift and returning the remainder. + * + * @param string $x (by referenc) + * @param int $shift + * @return string + * @access private + */ + function _base256_rshift(&$x, $shift) + { + if ($shift == 0) { + $x = ltrim($x, chr(0)); + return ''; + } + + $num_bytes = $shift >> 3; // eg. floor($shift/8) + $shift &= 7; // eg. $shift % 8 + + $remainder = ''; + if ($num_bytes) { + $start = $num_bytes > strlen($x) ? -strlen($x) : -$num_bytes; + $remainder = substr($x, $start); + $x = substr($x, 0, -$num_bytes); + } + + $carry = 0; + $carry_shift = 8 - $shift; + for ($i = 0; $i < strlen($x); ++$i) { + $temp = (ord($x[$i]) >> $shift) | $carry; + $carry = (ord($x[$i]) << $carry_shift) & 0xFF; + $x[$i] = chr($temp); + } + $x = ltrim($x, chr(0)); + + $remainder = chr($carry >> $carry_shift) . $remainder; + + return ltrim($remainder, chr(0)); + } + + // one quirk about how the following functions are implemented is that PHP defines N to be an unsigned long + // at 32-bits, while java's longs are 64-bits. + + /** + * Converts 32-bit integers to bytes. + * + * @param int $x + * @return string + * @access private + */ + function _int2bytes($x) + { + return ltrim(pack('N', $x), chr(0)); + } + + /** + * Converts bytes to 32-bit integers + * + * @param string $x + * @return int + * @access private + */ + function _bytes2int($x) + { + $temp = unpack('Nint', str_pad($x, 4, chr(0), STR_PAD_LEFT)); + return $temp['int']; + } + + /** + * DER-encode an integer + * + * The ability to DER-encode integers is needed to create RSA public keys for use with OpenSSL + * + * @see self::modPow() + * @access private + * @param int $length + * @return string + */ + function _encodeASN1Length($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * Single digit division + * + * Even if int64 is being used the division operator will return a float64 value + * if the dividend is not evenly divisible by the divisor. Since a float64 doesn't + * have the precision of int64 this is a problem so, when int64 is being used, + * we'll guarantee that the dividend is divisible by first subtracting the remainder. + * + * @access private + * @param int $x + * @param int $y + * @return int + */ + function _safe_divide($x, $y) + { + if (MATH_BIGINTEGER_BASE === 26) { + return (int) ($x / $y); + } + + // MATH_BIGINTEGER_BASE === 31 + return ($x - ($x % $y)) / $y; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/RC2.php b/app/Http/Controllers/dgaAdmin/Crypt/RC2.php new file mode 100644 index 0000000..f88ef9b --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/RC2.php @@ -0,0 +1,761 @@ + + * setKey('abcdefgh'); + * + * $plaintext = str_repeat('a', 1024); + * + * echo $rc2->decrypt($rc2->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RC2 + * @author Patrick Monnerat + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_RC2_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_RC2_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_RC2_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_RC2_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_RC2_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of RC2. + * + * @package Crypt_RC2 + * @access public + */ +class Crypt_RC2 extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 8; + + /** + * The Key + * + * @see Crypt_Base::key + * @see self::setKey() + * @var string + * @access private + */ + var $key; + + /** + * The Original (unpadded) Key + * + * @see Crypt_Base::key + * @see self::setKey() + * @see self::encrypt() + * @see self::decrypt() + * @var string + * @access private + */ + var $orig_key; + + /** + * Don't truncate / null pad key + * + * @see Crypt_Base::_clearBuffers() + * @var bool + * @access private + */ + var $skip_key_adjustment = true; + + /** + * Key Length (in bytes) + * + * @see Crypt_RC2::setKeyLength() + * @var int + * @access private + */ + var $key_length = 16; // = 128 bits + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'RC2'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'rc2'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 500; + + /** + * The key length in bits. + * + * @see self::setKeyLength() + * @see self::setKey() + * @var int + * @access private + * @internal Should be in range [1..1024]. + * @internal Changing this value after setting the key has no effect. + */ + var $default_key_length = 1024; + + /** + * The key length in bits. + * + * @see self::isValidEnine() + * @see self::setKey() + * @var int + * @access private + * @internal Should be in range [1..1024]. + */ + var $current_key_length; + + /** + * The Key Schedule + * + * @see self::_setupKey() + * @var array + * @access private + */ + var $keys; + + /** + * Key expansion randomization table. + * Twice the same 256-value sequence to save a modulus in key expansion. + * + * @see self::setKey() + * @var array + * @access private + */ + var $pitable = array( + 0xD9, 0x78, 0xF9, 0xC4, 0x19, 0xDD, 0xB5, 0xED, + 0x28, 0xE9, 0xFD, 0x79, 0x4A, 0xA0, 0xD8, 0x9D, + 0xC6, 0x7E, 0x37, 0x83, 0x2B, 0x76, 0x53, 0x8E, + 0x62, 0x4C, 0x64, 0x88, 0x44, 0x8B, 0xFB, 0xA2, + 0x17, 0x9A, 0x59, 0xF5, 0x87, 0xB3, 0x4F, 0x13, + 0x61, 0x45, 0x6D, 0x8D, 0x09, 0x81, 0x7D, 0x32, + 0xBD, 0x8F, 0x40, 0xEB, 0x86, 0xB7, 0x7B, 0x0B, + 0xF0, 0x95, 0x21, 0x22, 0x5C, 0x6B, 0x4E, 0x82, + 0x54, 0xD6, 0x65, 0x93, 0xCE, 0x60, 0xB2, 0x1C, + 0x73, 0x56, 0xC0, 0x14, 0xA7, 0x8C, 0xF1, 0xDC, + 0x12, 0x75, 0xCA, 0x1F, 0x3B, 0xBE, 0xE4, 0xD1, + 0x42, 0x3D, 0xD4, 0x30, 0xA3, 0x3C, 0xB6, 0x26, + 0x6F, 0xBF, 0x0E, 0xDA, 0x46, 0x69, 0x07, 0x57, + 0x27, 0xF2, 0x1D, 0x9B, 0xBC, 0x94, 0x43, 0x03, + 0xF8, 0x11, 0xC7, 0xF6, 0x90, 0xEF, 0x3E, 0xE7, + 0x06, 0xC3, 0xD5, 0x2F, 0xC8, 0x66, 0x1E, 0xD7, + 0x08, 0xE8, 0xEA, 0xDE, 0x80, 0x52, 0xEE, 0xF7, + 0x84, 0xAA, 0x72, 0xAC, 0x35, 0x4D, 0x6A, 0x2A, + 0x96, 0x1A, 0xD2, 0x71, 0x5A, 0x15, 0x49, 0x74, + 0x4B, 0x9F, 0xD0, 0x5E, 0x04, 0x18, 0xA4, 0xEC, + 0xC2, 0xE0, 0x41, 0x6E, 0x0F, 0x51, 0xCB, 0xCC, + 0x24, 0x91, 0xAF, 0x50, 0xA1, 0xF4, 0x70, 0x39, + 0x99, 0x7C, 0x3A, 0x85, 0x23, 0xB8, 0xB4, 0x7A, + 0xFC, 0x02, 0x36, 0x5B, 0x25, 0x55, 0x97, 0x31, + 0x2D, 0x5D, 0xFA, 0x98, 0xE3, 0x8A, 0x92, 0xAE, + 0x05, 0xDF, 0x29, 0x10, 0x67, 0x6C, 0xBA, 0xC9, + 0xD3, 0x00, 0xE6, 0xCF, 0xE1, 0x9E, 0xA8, 0x2C, + 0x63, 0x16, 0x01, 0x3F, 0x58, 0xE2, 0x89, 0xA9, + 0x0D, 0x38, 0x34, 0x1B, 0xAB, 0x33, 0xFF, 0xB0, + 0xBB, 0x48, 0x0C, 0x5F, 0xB9, 0xB1, 0xCD, 0x2E, + 0xC5, 0xF3, 0xDB, 0x47, 0xE5, 0xA5, 0x9C, 0x77, + 0x0A, 0xA6, 0x20, 0x68, 0xFE, 0x7F, 0xC1, 0xAD, + 0xD9, 0x78, 0xF9, 0xC4, 0x19, 0xDD, 0xB5, 0xED, + 0x28, 0xE9, 0xFD, 0x79, 0x4A, 0xA0, 0xD8, 0x9D, + 0xC6, 0x7E, 0x37, 0x83, 0x2B, 0x76, 0x53, 0x8E, + 0x62, 0x4C, 0x64, 0x88, 0x44, 0x8B, 0xFB, 0xA2, + 0x17, 0x9A, 0x59, 0xF5, 0x87, 0xB3, 0x4F, 0x13, + 0x61, 0x45, 0x6D, 0x8D, 0x09, 0x81, 0x7D, 0x32, + 0xBD, 0x8F, 0x40, 0xEB, 0x86, 0xB7, 0x7B, 0x0B, + 0xF0, 0x95, 0x21, 0x22, 0x5C, 0x6B, 0x4E, 0x82, + 0x54, 0xD6, 0x65, 0x93, 0xCE, 0x60, 0xB2, 0x1C, + 0x73, 0x56, 0xC0, 0x14, 0xA7, 0x8C, 0xF1, 0xDC, + 0x12, 0x75, 0xCA, 0x1F, 0x3B, 0xBE, 0xE4, 0xD1, + 0x42, 0x3D, 0xD4, 0x30, 0xA3, 0x3C, 0xB6, 0x26, + 0x6F, 0xBF, 0x0E, 0xDA, 0x46, 0x69, 0x07, 0x57, + 0x27, 0xF2, 0x1D, 0x9B, 0xBC, 0x94, 0x43, 0x03, + 0xF8, 0x11, 0xC7, 0xF6, 0x90, 0xEF, 0x3E, 0xE7, + 0x06, 0xC3, 0xD5, 0x2F, 0xC8, 0x66, 0x1E, 0xD7, + 0x08, 0xE8, 0xEA, 0xDE, 0x80, 0x52, 0xEE, 0xF7, + 0x84, 0xAA, 0x72, 0xAC, 0x35, 0x4D, 0x6A, 0x2A, + 0x96, 0x1A, 0xD2, 0x71, 0x5A, 0x15, 0x49, 0x74, + 0x4B, 0x9F, 0xD0, 0x5E, 0x04, 0x18, 0xA4, 0xEC, + 0xC2, 0xE0, 0x41, 0x6E, 0x0F, 0x51, 0xCB, 0xCC, + 0x24, 0x91, 0xAF, 0x50, 0xA1, 0xF4, 0x70, 0x39, + 0x99, 0x7C, 0x3A, 0x85, 0x23, 0xB8, 0xB4, 0x7A, + 0xFC, 0x02, 0x36, 0x5B, 0x25, 0x55, 0x97, 0x31, + 0x2D, 0x5D, 0xFA, 0x98, 0xE3, 0x8A, 0x92, 0xAE, + 0x05, 0xDF, 0x29, 0x10, 0x67, 0x6C, 0xBA, 0xC9, + 0xD3, 0x00, 0xE6, 0xCF, 0xE1, 0x9E, 0xA8, 0x2C, + 0x63, 0x16, 0x01, 0x3F, 0x58, 0xE2, 0x89, 0xA9, + 0x0D, 0x38, 0x34, 0x1B, 0xAB, 0x33, 0xFF, 0xB0, + 0xBB, 0x48, 0x0C, 0x5F, 0xB9, 0xB1, 0xCD, 0x2E, + 0xC5, 0xF3, 0xDB, 0x47, 0xE5, 0xA5, 0x9C, 0x77, + 0x0A, 0xA6, 0x20, 0x68, 0xFE, 0x7F, 0xC1, 0xAD + ); + + /** + * Inverse key expansion randomization table. + * + * @see self::setKey() + * @var array + * @access private + */ + var $invpitable = array( + 0xD1, 0xDA, 0xB9, 0x6F, 0x9C, 0xC8, 0x78, 0x66, + 0x80, 0x2C, 0xF8, 0x37, 0xEA, 0xE0, 0x62, 0xA4, + 0xCB, 0x71, 0x50, 0x27, 0x4B, 0x95, 0xD9, 0x20, + 0x9D, 0x04, 0x91, 0xE3, 0x47, 0x6A, 0x7E, 0x53, + 0xFA, 0x3A, 0x3B, 0xB4, 0xA8, 0xBC, 0x5F, 0x68, + 0x08, 0xCA, 0x8F, 0x14, 0xD7, 0xC0, 0xEF, 0x7B, + 0x5B, 0xBF, 0x2F, 0xE5, 0xE2, 0x8C, 0xBA, 0x12, + 0xE1, 0xAF, 0xB2, 0x54, 0x5D, 0x59, 0x76, 0xDB, + 0x32, 0xA2, 0x58, 0x6E, 0x1C, 0x29, 0x64, 0xF3, + 0xE9, 0x96, 0x0C, 0x98, 0x19, 0x8D, 0x3E, 0x26, + 0xAB, 0xA5, 0x85, 0x16, 0x40, 0xBD, 0x49, 0x67, + 0xDC, 0x22, 0x94, 0xBB, 0x3C, 0xC1, 0x9B, 0xEB, + 0x45, 0x28, 0x18, 0xD8, 0x1A, 0x42, 0x7D, 0xCC, + 0xFB, 0x65, 0x8E, 0x3D, 0xCD, 0x2A, 0xA3, 0x60, + 0xAE, 0x93, 0x8A, 0x48, 0x97, 0x51, 0x15, 0xF7, + 0x01, 0x0B, 0xB7, 0x36, 0xB1, 0x2E, 0x11, 0xFD, + 0x84, 0x2D, 0x3F, 0x13, 0x88, 0xB3, 0x34, 0x24, + 0x1B, 0xDE, 0xC5, 0x1D, 0x4D, 0x2B, 0x17, 0x31, + 0x74, 0xA9, 0xC6, 0x43, 0x6D, 0x39, 0x90, 0xBE, + 0xC3, 0xB0, 0x21, 0x6B, 0xF6, 0x0F, 0xD5, 0x99, + 0x0D, 0xAC, 0x1F, 0x5C, 0x9E, 0xF5, 0xF9, 0x4C, + 0xD6, 0xDF, 0x89, 0xE4, 0x8B, 0xFF, 0xC7, 0xAA, + 0xE7, 0xED, 0x46, 0x25, 0xB6, 0x06, 0x5E, 0x35, + 0xB5, 0xEC, 0xCE, 0xE8, 0x6C, 0x30, 0x55, 0x61, + 0x4A, 0xFE, 0xA0, 0x79, 0x03, 0xF0, 0x10, 0x72, + 0x7C, 0xCF, 0x52, 0xA6, 0xA7, 0xEE, 0x44, 0xD3, + 0x9A, 0x57, 0x92, 0xD0, 0x5A, 0x7A, 0x41, 0x7F, + 0x0E, 0x00, 0x63, 0xF2, 0x4F, 0x05, 0x83, 0xC9, + 0xA1, 0xD4, 0xDD, 0xC4, 0x56, 0xF4, 0xD2, 0x77, + 0x81, 0x09, 0x82, 0x33, 0x9F, 0x07, 0x86, 0x75, + 0x38, 0x4E, 0x69, 0xF1, 0xAD, 0x23, 0x73, 0x87, + 0x70, 0x02, 0xC2, 0x1E, 0xB8, 0x0A, 0xFC, 0xE6 + ); + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + if ($this->current_key_length != 128 || strlen($this->orig_key) < 16) { + return false; + } + $this->cipher_name_openssl_ecb = 'rc2-ecb'; + $this->cipher_name_openssl = 'rc2-' . $this->_openssl_translate_mode(); + } + + return parent::isValidEngine($engine); + } + + /** + * Sets the key length. + * + * Valid key lengths are 8 to 1024. + * Calling this function after setting the key has no effect until the next + * Crypt_RC2::setKey() call. + * + * @access public + * @param int $length in bits + */ + function setKeyLength($length) + { + if ($length < 8) { + $this->default_key_length = 1; + } elseif ($length > 1024) { + $this->default_key_length = 128; + } else { + $this->default_key_length = $length; + } + $this->current_key_length = $this->default_key_length; + + parent::setKeyLength($length); + } + + /** + * Returns the current key length + * + * @access public + * @return int + */ + function getKeyLength() + { + return $this->current_key_length; + } + + /** + * Sets the key. + * + * Keys can be of any length. RC2, itself, uses 8 to 1024 bit keys (eg. + * strlen($key) <= 128), however, we only use the first 128 bytes if $key + * has more then 128 bytes in it, and set $key to a single null byte if + * it is empty. + * + * If the key is not explicitly set, it'll be assumed to be a single + * null byte. + * + * @see Crypt_Base::setKey() + * @access public + * @param string $key + * @param int $t1 optional Effective key length in bits. + */ + function setKey($key, $t1 = 0) + { + $this->orig_key = $key; + + if ($t1 <= 0) { + $t1 = $this->default_key_length; + } elseif ($t1 > 1024) { + $t1 = 1024; + } + $this->current_key_length = $t1; + // Key byte count should be 1..128. + $key = strlen($key) ? substr($key, 0, 128) : "\x00"; + $t = strlen($key); + + // The mcrypt RC2 implementation only supports effective key length + // of 1024 bits. It is however possible to handle effective key + // lengths in range 1..1024 by expanding the key and applying + // inverse pitable mapping to the first byte before submitting it + // to mcrypt. + + // Key expansion. + $l = array_values(unpack('C*', $key)); + $t8 = ($t1 + 7) >> 3; + $tm = 0xFF >> (8 * $t8 - $t1); + + // Expand key. + $pitable = $this->pitable; + for ($i = $t; $i < 128; $i++) { + $l[$i] = $pitable[$l[$i - 1] + $l[$i - $t]]; + } + $i = 128 - $t8; + $l[$i] = $pitable[$l[$i] & $tm]; + while ($i--) { + $l[$i] = $pitable[$l[$i + 1] ^ $l[$i + $t8]]; + } + + // Prepare the key for mcrypt. + $l[0] = $this->invpitable[$l[0]]; + array_unshift($l, 'C*'); + + parent::setKey(call_user_func_array('pack', $l)); + } + + /** + * Encrypts a message. + * + * Mostly a wrapper for Crypt_Base::encrypt, with some additional OpenSSL handling code + * + * @see self::decrypt() + * @access public + * @param string $plaintext + * @return string $ciphertext + */ + function encrypt($plaintext) + { + if ($this->engine == CRYPT_ENGINE_OPENSSL) { + $temp = $this->key; + $this->key = $this->orig_key; + $result = parent::encrypt($plaintext); + $this->key = $temp; + return $result; + } + + return parent::encrypt($plaintext); + } + + /** + * Decrypts a message. + * + * Mostly a wrapper for Crypt_Base::decrypt, with some additional OpenSSL handling code + * + * @see self::encrypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + */ + function decrypt($ciphertext) + { + if ($this->engine == CRYPT_ENGINE_OPENSSL) { + $temp = $this->key; + $this->key = $this->orig_key; + $result = parent::decrypt($ciphertext); + $this->key = $temp; + return $result; + } + + return parent::decrypt($ciphertext); + } + + /** + * Encrypts a block + * + * @see Crypt_Base::_encryptBlock() + * @see Crypt_Base::encrypt() + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + list($r0, $r1, $r2, $r3) = array_values(unpack('v*', $in)); + $keys = $this->keys; + $limit = 20; + $actions = array($limit => 44, 44 => 64); + $j = 0; + + for (;;) { + // Mixing round. + $r0 = (($r0 + $keys[$j++] + ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF) << 1; + $r0 |= $r0 >> 16; + $r1 = (($r1 + $keys[$j++] + ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF) << 2; + $r1 |= $r1 >> 16; + $r2 = (($r2 + $keys[$j++] + ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF) << 3; + $r2 |= $r2 >> 16; + $r3 = (($r3 + $keys[$j++] + ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF) << 5; + $r3 |= $r3 >> 16; + + if ($j === $limit) { + if ($limit === 64) { + break; + } + + // Mashing round. + $r0 += $keys[$r3 & 0x3F]; + $r1 += $keys[$r0 & 0x3F]; + $r2 += $keys[$r1 & 0x3F]; + $r3 += $keys[$r2 & 0x3F]; + $limit = $actions[$limit]; + } + } + + return pack('vvvv', $r0, $r1, $r2, $r3); + } + + /** + * Decrypts a block + * + * @see Crypt_Base::_decryptBlock() + * @see Crypt_Base::decrypt() + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + list($r0, $r1, $r2, $r3) = array_values(unpack('v*', $in)); + $keys = $this->keys; + $limit = 44; + $actions = array($limit => 20, 20 => 0); + $j = 64; + + for (;;) { + // R-mixing round. + $r3 = ($r3 | ($r3 << 16)) >> 5; + $r3 = ($r3 - $keys[--$j] - ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF; + $r2 = ($r2 | ($r2 << 16)) >> 3; + $r2 = ($r2 - $keys[--$j] - ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF; + $r1 = ($r1 | ($r1 << 16)) >> 2; + $r1 = ($r1 - $keys[--$j] - ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF; + $r0 = ($r0 | ($r0 << 16)) >> 1; + $r0 = ($r0 - $keys[--$j] - ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF; + + if ($j === $limit) { + if ($limit === 0) { + break; + } + + // R-mashing round. + $r3 = ($r3 - $keys[$r2 & 0x3F]) & 0xFFFF; + $r2 = ($r2 - $keys[$r1 & 0x3F]) & 0xFFFF; + $r1 = ($r1 - $keys[$r0 & 0x3F]) & 0xFFFF; + $r0 = ($r0 - $keys[$r3 & 0x3F]) & 0xFFFF; + $limit = $actions[$limit]; + } + } + + return pack('vvvv', $r0, $r1, $r2, $r3); + } + + /** + * Setup the CRYPT_ENGINE_MCRYPT $engine + * + * @see Crypt_Base::_setupMcrypt() + * @access private + */ + function _setupMcrypt() + { + if (!isset($this->key)) { + $this->setKey(''); + } + + parent::_setupMcrypt(); + } + + /** + * Creates the key schedule + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (!isset($this->key)) { + $this->setKey(''); + } + + // Key has already been expanded in Crypt_RC2::setKey(): + // Only the first value must be altered. + $l = unpack('Ca/Cb/v*', $this->key); + array_unshift($l, $this->pitable[$l['a']] | ($l['b'] << 8)); + unset($l['a']); + unset($l['b']); + $this->keys = $l; + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions = &Crypt_RC2::_getLambdaFunctions(); + + // The first 10 generated $lambda_functions will use the $keys hardcoded as integers + // for the mixing rounds, for better inline crypt performance [~20% faster]. + // But for memory reason we have to limit those ultra-optimized $lambda_functions to an amount of 10. + // (Currently, for Crypt_RC2, one generated $lambda_function cost on php5.5@32bit ~60kb unfreeable mem and ~100kb on php5.5@64bit) + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_RC2, {$this->mode}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + // Is there a re-usable $lambda_functions in there? + // If not, we have to create it. + if (!isset($lambda_functions[$code_hash])) { + // Init code for both, encrypt and decrypt. + $init_crypt = '$keys = $self->keys;'; + + switch (true) { + case $gen_hi_opt_code: + $keys = $this->keys; + default: + $keys = array(); + foreach ($this->keys as $k => $v) { + $keys[$k] = '$keys[' . $k . ']'; + } + } + + // $in is the current 8 bytes block which has to be en/decrypt + $encrypt_block = $decrypt_block = ' + $in = unpack("v4", $in); + $r0 = $in[1]; + $r1 = $in[2]; + $r2 = $in[3]; + $r3 = $in[4]; + '; + + // Create code for encryption. + $limit = 20; + $actions = array($limit => 44, 44 => 64); + $j = 0; + + for (;;) { + // Mixing round. + $encrypt_block .= ' + $r0 = (($r0 + ' . $keys[$j++] . ' + + ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF) << 1; + $r0 |= $r0 >> 16; + $r1 = (($r1 + ' . $keys[$j++] . ' + + ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF) << 2; + $r1 |= $r1 >> 16; + $r2 = (($r2 + ' . $keys[$j++] . ' + + ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF) << 3; + $r2 |= $r2 >> 16; + $r3 = (($r3 + ' . $keys[$j++] . ' + + ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF) << 5; + $r3 |= $r3 >> 16;'; + + if ($j === $limit) { + if ($limit === 64) { + break; + } + + // Mashing round. + $encrypt_block .= ' + $r0 += $keys[$r3 & 0x3F]; + $r1 += $keys[$r0 & 0x3F]; + $r2 += $keys[$r1 & 0x3F]; + $r3 += $keys[$r2 & 0x3F];'; + $limit = $actions[$limit]; + } + } + + $encrypt_block .= '$in = pack("v4", $r0, $r1, $r2, $r3);'; + + // Create code for decryption. + $limit = 44; + $actions = array($limit => 20, 20 => 0); + $j = 64; + + for (;;) { + // R-mixing round. + $decrypt_block .= ' + $r3 = ($r3 | ($r3 << 16)) >> 5; + $r3 = ($r3 - ' . $keys[--$j] . ' - + ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF; + $r2 = ($r2 | ($r2 << 16)) >> 3; + $r2 = ($r2 - ' . $keys[--$j] . ' - + ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF; + $r1 = ($r1 | ($r1 << 16)) >> 2; + $r1 = ($r1 - ' . $keys[--$j] . ' - + ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF; + $r0 = ($r0 | ($r0 << 16)) >> 1; + $r0 = ($r0 - ' . $keys[--$j] . ' - + ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF;'; + + if ($j === $limit) { + if ($limit === 0) { + break; + } + + // R-mashing round. + $decrypt_block .= ' + $r3 = ($r3 - $keys[$r2 & 0x3F]) & 0xFFFF; + $r2 = ($r2 - $keys[$r1 & 0x3F]) & 0xFFFF; + $r1 = ($r1 - $keys[$r0 & 0x3F]) & 0xFFFF; + $r0 = ($r0 - $keys[$r3 & 0x3F]) & 0xFFFF;'; + $limit = $actions[$limit]; + } + } + + $decrypt_block .= '$in = pack("v4", $r0, $r1, $r2, $r3);'; + + // Creates the inline-crypt function + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + + // Set the inline-crypt function as callback in: $this->inline_crypt + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/RC4.php b/app/Http/Controllers/dgaAdmin/Crypt/RC4.php new file mode 100644 index 0000000..8a59518 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/RC4.php @@ -0,0 +1,366 @@ + + * setKey('abcdefgh'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $rc4->decrypt($rc4->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RC4 + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access private + * @see self::_crypt() + */ +define('CRYPT_RC4_ENCRYPT', 0); +define('CRYPT_RC4_DECRYPT', 1); +/**#@-*/ + +/** + * Pure-PHP implementation of RC4. + * + * @package Crypt_RC4 + * @author Jim Wigginton + * @access public + */ +class Crypt_RC4 extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * RC4 is a stream cipher + * so we the block_size to 0 + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 0; + + /** + * Key Length (in bytes) + * + * @see Crypt_RC4::setKeyLength() + * @var int + * @access private + */ + var $key_length = 128; // = 1024 bits + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'RC4'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'arcfour'; + + /** + * Holds whether performance-optimized $inline_crypt() can/should be used. + * + * @see Crypt_Base::inline_crypt + * @var mixed + * @access private + */ + var $use_inline_crypt = false; // currently not available + + /** + * The Key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key; + + /** + * The Key Stream for decryption and encryption + * + * @see self::setKey() + * @var array + * @access private + */ + var $stream; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * @see Crypt_Base::Crypt_Base() + * @return Crypt_RC4 + * @access public + */ + function __construct() + { + parent::__construct(CRYPT_MODE_STREAM); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function Crypt_RC4() + { + $this->__construct(); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($engine == CRYPT_ENGINE_OPENSSL) { + if (version_compare(PHP_VERSION, '5.3.7') >= 0) { + $this->cipher_name_openssl = 'rc4-40'; + } else { + switch (strlen($this->key)) { + case 5: + $this->cipher_name_openssl = 'rc4-40'; + break; + case 8: + $this->cipher_name_openssl = 'rc4-64'; + break; + case 16: + $this->cipher_name_openssl = 'rc4'; + break; + default: + return false; + } + } + } + + return parent::isValidEngine($engine); + } + + /** + * Dummy function. + * + * Some protocols, such as WEP, prepend an "initialization vector" to the key, effectively creating a new key [1]. + * If you need to use an initialization vector in this manner, feel free to prepend it to the key, yourself, before + * calling setKey(). + * + * [1] WEP's initialization vectors (IV's) are used in a somewhat insecure way. Since, in that protocol, + * the IV's are relatively easy to predict, an attack described by + * {@link http://www.drizzle.com/~aboba/IEEE/rc4_ksaproc.pdf Scott Fluhrer, Itsik Mantin, and Adi Shamir} + * can be used to quickly guess at the rest of the key. The following links elaborate: + * + * {@link http://www.rsa.com/rsalabs/node.asp?id=2009 http://www.rsa.com/rsalabs/node.asp?id=2009} + * {@link http://en.wikipedia.org/wiki/Related_key_attack http://en.wikipedia.org/wiki/Related_key_attack} + * + * @param string $iv + * @see self::setKey() + * @access public + */ + function setIV($iv) + { + } + + /** + * Sets the key length + * + * Keys can be between 1 and 256 bytes long. + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + if ($length < 8) { + $this->key_length = 1; + } elseif ($length > 2048) { + $this->key_length = 256; + } else { + $this->key_length = $length >> 3; + } + + parent::setKeyLength($length); + } + + /** + * Encrypts a message. + * + * @see Crypt_Base::decrypt() + * @see self::_crypt() + * @access public + * @param string $plaintext + * @return string $ciphertext + */ + function encrypt($plaintext) + { + if ($this->engine != CRYPT_ENGINE_INTERNAL) { + return parent::encrypt($plaintext); + } + return $this->_crypt($plaintext, CRYPT_RC4_ENCRYPT); + } + + /** + * Decrypts a message. + * + * $this->decrypt($this->encrypt($plaintext)) == $this->encrypt($this->encrypt($plaintext)). + * At least if the continuous buffer is disabled. + * + * @see Crypt_Base::encrypt() + * @see self::_crypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + */ + function decrypt($ciphertext) + { + if ($this->engine != CRYPT_ENGINE_INTERNAL) { + return parent::decrypt($ciphertext); + } + return $this->_crypt($ciphertext, CRYPT_RC4_DECRYPT); + } + + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + $key = $this->key; + $keyLength = strlen($key); + $keyStream = range(0, 255); + $j = 0; + for ($i = 0; $i < 256; $i++) { + $j = ($j + $keyStream[$i] + ord($key[$i % $keyLength])) & 255; + $temp = $keyStream[$i]; + $keyStream[$i] = $keyStream[$j]; + $keyStream[$j] = $temp; + } + + $this->stream = array(); + $this->stream[CRYPT_RC4_DECRYPT] = $this->stream[CRYPT_RC4_ENCRYPT] = array( + 0, // index $i + 0, // index $j + $keyStream + ); + } + + /** + * Encrypts or decrypts a message. + * + * @see self::encrypt() + * @see self::decrypt() + * @access private + * @param string $text + * @param int $mode + * @return string $text + */ + function _crypt($text, $mode) + { + if ($this->changed) { + $this->_setup(); + $this->changed = false; + } + + $stream = &$this->stream[$mode]; + if ($this->continuousBuffer) { + $i = &$stream[0]; + $j = &$stream[1]; + $keyStream = &$stream[2]; + } else { + $i = $stream[0]; + $j = $stream[1]; + $keyStream = $stream[2]; + } + + $len = strlen($text); + for ($k = 0; $k < $len; ++$k) { + $i = ($i + 1) & 255; + $ksi = $keyStream[$i]; + $j = ($j + $ksi) & 255; + $ksj = $keyStream[$j]; + + $keyStream[$i] = $ksj; + $keyStream[$j] = $ksi; + $text[$k] = $text[$k] ^ chr($keyStream[($ksj + $ksi) & 255]); + } + + return $text; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/RSA.php b/app/Http/Controllers/dgaAdmin/Crypt/RSA.php new file mode 100644 index 0000000..817b1a3 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/RSA.php @@ -0,0 +1,3349 @@ + + * createKey()); + * + * $plaintext = 'terrafrost'; + * + * $rsa->loadKey($privatekey); + * $ciphertext = $rsa->encrypt($plaintext); + * + * $rsa->loadKey($publickey); + * echo $rsa->decrypt($ciphertext); + * ?> + * + * + * Here's an example of how to create signatures and verify signatures with this library: + * + * createKey()); + * + * $plaintext = 'terrafrost'; + * + * $rsa->loadKey($privatekey); + * $signature = $rsa->sign($plaintext); + * + * $rsa->loadKey($publickey); + * echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified'; + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RSA + * @author Jim Wigginton + * @copyright 2009 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Random + */ +// the class_exists() will only be called if the crypt_random_string function hasn't been defined and +// will trigger a call to __autoload() if you're wanting to auto-load classes +// call function_exists() a second time to stop the include_once from being called outside +// of the auto loader +if (!function_exists('crypt_random_string')) { + include_once 'Random.php'; +} + +/** + * Include Crypt_Hash + */ +if (!class_exists('Crypt_Hash')) { + include_once 'Hash.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Use {@link http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding Optimal Asymmetric Encryption Padding} + * (OAEP) for encryption / decryption. + * + * Uses sha1 by default. + * + * @see self::setHash() + * @see self::setMGFHash() + */ +define('CRYPT_RSA_ENCRYPTION_OAEP', 1); +/** + * Use PKCS#1 padding. + * + * Although CRYPT_RSA_ENCRYPTION_OAEP offers more security, including PKCS#1 padding is necessary for purposes of backwards + * compatibility with protocols (like SSH-1) written before OAEP's introduction. + */ +define('CRYPT_RSA_ENCRYPTION_PKCS1', 2); +/** + * Do not use any padding + * + * Although this method is not recommended it can none-the-less sometimes be useful if you're trying to decrypt some legacy + * stuff, if you're trying to diagnose why an encrypted message isn't decrypting, etc. + */ +define('CRYPT_RSA_ENCRYPTION_NONE', 3); +/**#@-*/ + +/**#@+ + * @access public + * @see self::sign() + * @see self::verify() + * @see self::setHash() + */ +/** + * Use the Probabilistic Signature Scheme for signing + * + * Uses sha1 by default. + * + * @see self::setSaltLength() + * @see self::setMGFHash() + */ +define('CRYPT_RSA_SIGNATURE_PSS', 1); +/** + * Use the PKCS#1 scheme by default. + * + * Although CRYPT_RSA_SIGNATURE_PSS offers more security, including PKCS#1 signing is necessary for purposes of backwards + * compatibility with protocols (like SSH-2) written before PSS's introduction. + */ +define('CRYPT_RSA_SIGNATURE_PKCS1', 2); +/**#@-*/ + +/**#@+ + * @access private + * @see self::createKey() + */ +/** + * ASN1 Integer + */ +define('CRYPT_RSA_ASN1_INTEGER', 2); +/** + * ASN1 Bit String + */ +define('CRYPT_RSA_ASN1_BITSTRING', 3); +/** + * ASN1 Octet String + */ +define('CRYPT_RSA_ASN1_OCTETSTRING', 4); +/** + * ASN1 Object Identifier + */ +define('CRYPT_RSA_ASN1_OBJECT', 6); +/** + * ASN1 Sequence (with the constucted bit set) + */ +define('CRYPT_RSA_ASN1_SEQUENCE', 48); +/**#@-*/ + +/**#@+ + * @access private + * @see self::Crypt_RSA() + */ +/** + * To use the pure-PHP implementation + */ +define('CRYPT_RSA_MODE_INTERNAL', 1); +/** + * To use the OpenSSL library + * + * (if enabled; otherwise, the internal implementation will be used) + */ +define('CRYPT_RSA_MODE_OPENSSL', 2); +/**#@-*/ + +/** + * Default openSSL configuration file. + */ +define('CRYPT_RSA_OPENSSL_CONFIG', dirname(__FILE__) . '/../openssl.cnf'); + +/**#@+ + * @access public + * @see self::createKey() + * @see self::setPrivateKeyFormat() + */ +/** + * PKCS#1 formatted private key + * + * Used by OpenSSH + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PKCS1', 0); +/** + * PuTTY formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PUTTY', 1); +/** + * XML formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_XML', 2); +/** + * PKCS#8 formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PKCS8', 8); +/** + * OpenSSH formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_OPENSSH', 9); +/**#@-*/ + +/**#@+ + * @access public + * @see self::createKey() + * @see self::setPublicKeyFormat() + */ +/** + * Raw public key + * + * An array containing two Math_BigInteger objects. + * + * The exponent can be indexed with any of the following: + * + * 0, e, exponent, publicExponent + * + * The modulus can be indexed with any of the following: + * + * 1, n, modulo, modulus + */ +define('CRYPT_RSA_PUBLIC_FORMAT_RAW', 3); +/** + * PKCS#1 formatted public key (raw) + * + * Used by File/X509.php + * + * Has the following header: + * + * -----BEGIN RSA PUBLIC KEY----- + * + * Analogous to ssh-keygen's pem format (as specified by -m) + */ +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1', 4); +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW', 4); +/** + * XML formatted public key + */ +define('CRYPT_RSA_PUBLIC_FORMAT_XML', 5); +/** + * OpenSSH formatted public key + * + * Place in $HOME/.ssh/authorized_keys + */ +define('CRYPT_RSA_PUBLIC_FORMAT_OPENSSH', 6); +/** + * PKCS#1 formatted public key (encapsulated) + * + * Used by PHP's openssl_public_encrypt() and openssl's rsautl (when -pubin is set) + * + * Has the following header: + * + * -----BEGIN PUBLIC KEY----- + * + * Analogous to ssh-keygen's pkcs8 format (as specified by -m). Although PKCS8 + * is specific to private keys it's basically creating a DER-encoded wrapper + * for keys. This just extends that same concept to public keys (much like ssh-keygen) + */ +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS8', 7); +/**#@-*/ + +/** + * Pure-PHP PKCS#1 compliant implementation of RSA. + * + * @package Crypt_RSA + * @author Jim Wigginton + * @access public + */ +class Crypt_RSA +{ + /** + * Precomputed Zero + * + * @var Math_BigInteger + * @access private + */ + var $zero; + + /** + * Precomputed One + * + * @var Math_BigInteger + * @access private + */ + var $one; + + /** + * Private Key Format + * + * @var int + * @access private + */ + var $privateKeyFormat = CRYPT_RSA_PRIVATE_FORMAT_PKCS1; + + /** + * Public Key Format + * + * @var int + * @access public + */ + var $publicKeyFormat = CRYPT_RSA_PUBLIC_FORMAT_PKCS8; + + /** + * Modulus (ie. n) + * + * @var Math_BigInteger + * @access private + */ + var $modulus; + + /** + * Modulus length + * + * @var Math_BigInteger + * @access private + */ + var $k; + + /** + * Exponent (ie. e or d) + * + * @var Math_BigInteger + * @access private + */ + var $exponent; + + /** + * Primes for Chinese Remainder Theorem (ie. p and q) + * + * @var array + * @access private + */ + var $primes; + + /** + * Exponents for Chinese Remainder Theorem (ie. dP and dQ) + * + * @var array + * @access private + */ + var $exponents; + + /** + * Coefficients for Chinese Remainder Theorem (ie. qInv) + * + * @var array + * @access private + */ + var $coefficients; + + /** + * Hash name + * + * @var string + * @access private + */ + var $hashName; + + /** + * Hash function + * + * @var Crypt_Hash + * @access private + */ + var $hash; + + /** + * Length of hash function output + * + * @var int + * @access private + */ + var $hLen; + + /** + * Length of salt + * + * @var int + * @access private + */ + var $sLen; + + /** + * Hash function for the Mask Generation Function + * + * @var Crypt_Hash + * @access private + */ + var $mgfHash; + + /** + * Length of MGF hash function output + * + * @var int + * @access private + */ + var $mgfHLen; + + /** + * Encryption mode + * + * @var int + * @access private + */ + var $encryptionMode = CRYPT_RSA_ENCRYPTION_OAEP; + + /** + * Signature mode + * + * @var int + * @access private + */ + var $signatureMode = CRYPT_RSA_SIGNATURE_PSS; + + /** + * Public Exponent + * + * @var mixed + * @access private + */ + var $publicExponent = false; + + /** + * Password + * + * @var string + * @access private + */ + var $password = false; + + /** + * Components + * + * For use with parsing XML formatted keys. PHP's XML Parser functions use utilized - instead of PHP's DOM functions - + * because PHP's XML Parser functions work on PHP4 whereas PHP's DOM functions - although surperior - don't. + * + * @see self::_start_element_handler() + * @var array + * @access private + */ + var $components = array(); + + /** + * Current String + * + * For use with parsing XML formatted keys. + * + * @see self::_character_handler() + * @see self::_stop_element_handler() + * @var mixed + * @access private + */ + var $current; + + /** + * OpenSSL configuration file name. + * + * Set to null to use system configuration file. + * @see self::createKey() + * @var mixed + * @Access public + */ + var $configFile; + + /** + * Public key comment field. + * + * @var string + * @access private + */ + var $comment = 'phpseclib-generated-key'; + + /** + * The constructor + * + * If you want to make use of the openssl extension, you'll need to set the mode manually, yourself. The reason + * Crypt_RSA doesn't do it is because OpenSSL doesn't fail gracefully. openssl_pkey_new(), in particular, requires + * openssl.cnf be present somewhere and, unfortunately, the only real way to find out is too late. + * + * @return Crypt_RSA + * @access public + */ + function __construct() + { + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + $this->configFile = CRYPT_RSA_OPENSSL_CONFIG; + + if (!defined('CRYPT_RSA_MODE')) { + switch (true) { + // Math/BigInteger's openssl requirements are a little less stringent than Crypt/RSA's. in particular, + // Math/BigInteger doesn't require an openssl.cfg file whereas Crypt/RSA does. so if Math/BigInteger + // can't use OpenSSL it can be pretty trivially assumed, then, that Crypt/RSA can't either. + case defined('MATH_BIGINTEGER_OPENSSL_DISABLE'): + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + break; + // openssl_pkey_get_details - which is used in the only place Crypt/RSA.php uses OpenSSL - was introduced in PHP 5.2.0 + case !function_exists('openssl_pkey_get_details'): + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + break; + case function_exists('phpinfo') && extension_loaded('openssl') && version_compare(PHP_VERSION, '4.2.0', '>=') && file_exists($this->configFile): + // some versions of XAMPP have mismatched versions of OpenSSL which causes it not to work + ob_start(); + @phpinfo(); + $content = ob_get_contents(); + ob_end_clean(); + + preg_match_all('#OpenSSL (Header|Library) Version(.*)#im', $content, $matches); + + $versions = array(); + if (!empty($matches[1])) { + for ($i = 0; $i < count($matches[1]); $i++) { + $fullVersion = trim(str_replace('=>', '', strip_tags($matches[2][$i]))); + + // Remove letter part in OpenSSL version + if (!preg_match('/(\d+\.\d+\.\d+)/i', $fullVersion, $m)) { + $versions[$matches[1][$i]] = $fullVersion; + } else { + $versions[$matches[1][$i]] = $m[0]; + } + } + } + + // it doesn't appear that OpenSSL versions were reported upon until PHP 5.3+ + switch (true) { + case !isset($versions['Header']): + case !isset($versions['Library']): + case $versions['Header'] == $versions['Library']: + case version_compare($versions['Header'], '1.0.0') >= 0 && version_compare($versions['Library'], '1.0.0') >= 0: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_OPENSSL); + break; + default: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + define('MATH_BIGINTEGER_OPENSSL_DISABLE', true); + } + break; + default: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + } + } + + $this->zero = new Math_BigInteger(); + $this->one = new Math_BigInteger(1); + + $this->hash = new Crypt_Hash('sha1'); + $this->hLen = $this->hash->getLength(); + $this->hashName = 'sha1'; + $this->mgfHash = new Crypt_Hash('sha1'); + $this->mgfHLen = $this->mgfHash->getLength(); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function Crypt_RSA() + { + $this->__construct(); + } + + /** + * Create public / private key pair + * + * Returns an array with the following three elements: + * - 'privatekey': The private key. + * - 'publickey': The public key. + * - 'partialkey': A partially computed key (if the execution time exceeded $timeout). + * Will need to be passed back to Crypt_RSA::createKey() as the third parameter for further processing. + * + * @access public + * @param int $bits + * @param int $timeout + * @param array $partial + */ + function createKey($bits = 1024, $timeout = false, $partial = array()) + { + if (!defined('CRYPT_RSA_EXPONENT')) { + // http://en.wikipedia.org/wiki/65537_%28number%29 + define('CRYPT_RSA_EXPONENT', '65537'); + } + // per , this number ought not result in primes smaller + // than 256 bits. as a consequence if the key you're trying to create is 1024 bits and you've set CRYPT_RSA_SMALLEST_PRIME + // to 384 bits then you're going to get a 384 bit prime and a 640 bit prime (384 + 1024 % 384). at least if + // CRYPT_RSA_MODE is set to CRYPT_RSA_MODE_INTERNAL. if CRYPT_RSA_MODE is set to CRYPT_RSA_MODE_OPENSSL then + // CRYPT_RSA_SMALLEST_PRIME is ignored (ie. multi-prime RSA support is more intended as a way to speed up RSA key + // generation when there's a chance neither gmp nor OpenSSL are installed) + if (!defined('CRYPT_RSA_SMALLEST_PRIME')) { + define('CRYPT_RSA_SMALLEST_PRIME', 4096); + } + + // OpenSSL uses 65537 as the exponent and requires RSA keys be 384 bits minimum + if (CRYPT_RSA_MODE == CRYPT_RSA_MODE_OPENSSL && $bits >= 384 && CRYPT_RSA_EXPONENT == 65537) { + $config = array(); + if (isset($this->configFile)) { + $config['config'] = $this->configFile; + } + $rsa = openssl_pkey_new(array('private_key_bits' => $bits) + $config); + openssl_pkey_export($rsa, $privatekey, null, $config); + $publickey = openssl_pkey_get_details($rsa); + $publickey = $publickey['key']; + + $privatekey = call_user_func_array(array($this, '_convertPrivateKey'), array_values($this->_parseKey($privatekey, CRYPT_RSA_PRIVATE_FORMAT_PKCS1))); + $publickey = call_user_func_array(array($this, '_convertPublicKey'), array_values($this->_parseKey($publickey, CRYPT_RSA_PUBLIC_FORMAT_PKCS1))); + + // clear the buffer of error strings stemming from a minimalistic openssl.cnf + while (openssl_error_string() !== false) { + } + + return array( + 'privatekey' => $privatekey, + 'publickey' => $publickey, + 'partialkey' => false + ); + } + + static $e; + if (!isset($e)) { + $e = new Math_BigInteger(CRYPT_RSA_EXPONENT); + } + + extract($this->_generateMinMax($bits)); + $absoluteMin = $min; + $temp = $bits >> 1; // divide by two to see how many bits P and Q would be + if ($temp > CRYPT_RSA_SMALLEST_PRIME) { + $num_primes = floor($bits / CRYPT_RSA_SMALLEST_PRIME); + $temp = CRYPT_RSA_SMALLEST_PRIME; + } else { + $num_primes = 2; + } + extract($this->_generateMinMax($temp + $bits % $temp)); + $finalMax = $max; + extract($this->_generateMinMax($temp)); + + $generator = new Math_BigInteger(); + + $n = $this->one->copy(); + if (!empty($partial)) { + extract(unserialize($partial)); + } else { + $exponents = $coefficients = $primes = array(); + $lcm = array( + 'top' => $this->one->copy(), + 'bottom' => false + ); + } + + $start = time(); + $i0 = count($primes) + 1; + + do { + for ($i = $i0; $i <= $num_primes; $i++) { + if ($timeout !== false) { + $timeout-= time() - $start; + $start = time(); + if ($timeout <= 0) { + return array( + 'privatekey' => '', + 'publickey' => '', + 'partialkey' => serialize(array( + 'primes' => $primes, + 'coefficients' => $coefficients, + 'lcm' => $lcm, + 'exponents' => $exponents + )) + ); + } + } + + if ($i == $num_primes) { + list($min, $temp) = $absoluteMin->divide($n); + if (!$temp->equals($this->zero)) { + $min = $min->add($this->one); // ie. ceil() + } + $primes[$i] = $generator->randomPrime($min, $finalMax, $timeout); + } else { + $primes[$i] = $generator->randomPrime($min, $max, $timeout); + } + + if ($primes[$i] === false) { // if we've reached the timeout + if (count($primes) > 1) { + $partialkey = ''; + } else { + array_pop($primes); + $partialkey = serialize(array( + 'primes' => $primes, + 'coefficients' => $coefficients, + 'lcm' => $lcm, + 'exponents' => $exponents + )); + } + + return array( + 'privatekey' => '', + 'publickey' => '', + 'partialkey' => $partialkey + ); + } + + // the first coefficient is calculated differently from the rest + // ie. instead of being $primes[1]->modInverse($primes[2]), it's $primes[2]->modInverse($primes[1]) + if ($i > 2) { + $coefficients[$i] = $n->modInverse($primes[$i]); + } + + $n = $n->multiply($primes[$i]); + + $temp = $primes[$i]->subtract($this->one); + + // textbook RSA implementations use Euler's totient function instead of the least common multiple. + // see http://en.wikipedia.org/wiki/Euler%27s_totient_function + $lcm['top'] = $lcm['top']->multiply($temp); + $lcm['bottom'] = $lcm['bottom'] === false ? $temp : $lcm['bottom']->gcd($temp); + + $exponents[$i] = $e->modInverse($temp); + } + + list($temp) = $lcm['top']->divide($lcm['bottom']); + $gcd = $temp->gcd($e); + $i0 = 1; + } while (!$gcd->equals($this->one)); + + $d = $e->modInverse($temp); + + $coefficients[2] = $primes[2]->modInverse($primes[1]); + + // from : + // RSAPrivateKey ::= SEQUENCE { + // version Version, + // modulus INTEGER, -- n + // publicExponent INTEGER, -- e + // privateExponent INTEGER, -- d + // prime1 INTEGER, -- p + // prime2 INTEGER, -- q + // exponent1 INTEGER, -- d mod (p-1) + // exponent2 INTEGER, -- d mod (q-1) + // coefficient INTEGER, -- (inverse of q) mod p + // otherPrimeInfos OtherPrimeInfos OPTIONAL + // } + + return array( + 'privatekey' => $this->_convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients), + 'publickey' => $this->_convertPublicKey($n, $e), + 'partialkey' => false + ); + } + + /** + * Convert a private key to the appropriate format. + * + * @access private + * @see self::setPrivateKeyFormat() + * @param Math_BigInteger $n + * @param Math_BigInteger $e + * @param Math_BigInteger $d + * @param array $primes + * @param array $exponents + * @param array $coefficients + * @return string + */ + function _convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients) + { + $signed = $this->privateKeyFormat != CRYPT_RSA_PRIVATE_FORMAT_XML; + $num_primes = count($primes); + $raw = array( + 'version' => $num_primes == 2 ? chr(0) : chr(1), // two-prime vs. multi + 'modulus' => $n->toBytes($signed), + 'publicExponent' => $e->toBytes($signed), + 'privateExponent' => $d->toBytes($signed), + 'prime1' => $primes[1]->toBytes($signed), + 'prime2' => $primes[2]->toBytes($signed), + 'exponent1' => $exponents[1]->toBytes($signed), + 'exponent2' => $exponents[2]->toBytes($signed), + 'coefficient' => $coefficients[2]->toBytes($signed) + ); + + // if the format in question does not support multi-prime rsa and multi-prime rsa was used, + // call _convertPublicKey() instead. + switch ($this->privateKeyFormat) { + case CRYPT_RSA_PRIVATE_FORMAT_XML: + if ($num_primes != 2) { + return false; + } + return "\r\n" . + ' ' . base64_encode($raw['modulus']) . "\r\n" . + ' ' . base64_encode($raw['publicExponent']) . "\r\n" . + '

' . base64_encode($raw['prime1']) . "

\r\n" . + ' ' . base64_encode($raw['prime2']) . "\r\n" . + ' ' . base64_encode($raw['exponent1']) . "\r\n" . + ' ' . base64_encode($raw['exponent2']) . "\r\n" . + ' ' . base64_encode($raw['coefficient']) . "\r\n" . + ' ' . base64_encode($raw['privateExponent']) . "\r\n" . + '
'; + break; + case CRYPT_RSA_PRIVATE_FORMAT_PUTTY: + if ($num_primes != 2) { + return false; + } + $key = "PuTTY-User-Key-File-2: ssh-rsa\r\nEncryption: "; + $encryption = (!empty($this->password) || is_string($this->password)) ? 'aes256-cbc' : 'none'; + $key.= $encryption; + $key.= "\r\nComment: " . $this->comment . "\r\n"; + $public = pack( + 'Na*Na*Na*', + strlen('ssh-rsa'), + 'ssh-rsa', + strlen($raw['publicExponent']), + $raw['publicExponent'], + strlen($raw['modulus']), + $raw['modulus'] + ); + $source = pack( + 'Na*Na*Na*Na*', + strlen('ssh-rsa'), + 'ssh-rsa', + strlen($encryption), + $encryption, + strlen($this->comment), + $this->comment, + strlen($public), + $public + ); + $public = base64_encode($public); + $key.= "Public-Lines: " . ((strlen($public) + 63) >> 6) . "\r\n"; + $key.= chunk_split($public, 64); + $private = pack( + 'Na*Na*Na*Na*', + strlen($raw['privateExponent']), + $raw['privateExponent'], + strlen($raw['prime1']), + $raw['prime1'], + strlen($raw['prime2']), + $raw['prime2'], + strlen($raw['coefficient']), + $raw['coefficient'] + ); + if (empty($this->password) && !is_string($this->password)) { + $source.= pack('Na*', strlen($private), $private); + $hashkey = 'putty-private-key-file-mac-key'; + } else { + $private.= crypt_random_string(16 - (strlen($private) & 15)); + $source.= pack('Na*', strlen($private), $private); + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $sequence = 0; + $symkey = ''; + while (strlen($symkey) < 32) { + $temp = pack('Na*', $sequence++, $this->password); + $symkey.= pack('H*', sha1($temp)); + } + $symkey = substr($symkey, 0, 32); + $crypto = new Crypt_AES(); + + $crypto->setKey($symkey); + $crypto->disablePadding(); + $private = $crypto->encrypt($private); + $hashkey = 'putty-private-key-file-mac-key' . $this->password; + } + + $private = base64_encode($private); + $key.= 'Private-Lines: ' . ((strlen($private) + 63) >> 6) . "\r\n"; + $key.= chunk_split($private, 64); + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $hash = new Crypt_Hash('sha1'); + $hash->setKey(pack('H*', sha1($hashkey))); + $key.= 'Private-MAC: ' . bin2hex($hash->hash($source)) . "\r\n"; + + return $key; + case CRYPT_RSA_PRIVATE_FORMAT_OPENSSH: + if ($num_primes != 2) { + return false; + } + $publicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($raw['publicExponent']), $raw['publicExponent'], strlen($raw['modulus']), $raw['modulus']); + $privateKey = pack( + 'Na*Na*Na*Na*Na*Na*Na*', + strlen('ssh-rsa'), + 'ssh-rsa', + strlen($raw['modulus']), + $raw['modulus'], + strlen($raw['publicExponent']), + $raw['publicExponent'], + strlen($raw['privateExponent']), + $raw['privateExponent'], + strlen($raw['coefficient']), + $raw['coefficient'], + strlen($raw['prime1']), + $raw['prime1'], + strlen($raw['prime2']), + $raw['prime2'] + ); + $checkint = crypt_random_string(4); + $paddedKey = pack( + 'a*Na*', + $checkint . $checkint . $privateKey, + strlen($this->comment), + $this->comment + ); + $paddingLength = (7 * strlen($paddedKey)) % 8; + for ($i = 1; $i <= $paddingLength; $i++) { + $paddedKey.= chr($i); + } + $key = pack( + 'Na*Na*Na*NNa*Na*', + strlen('none'), + 'none', + strlen('none'), + 'none', + 0, + '', + 1, + strlen($publicKey), + $publicKey, + strlen($paddedKey), + $paddedKey + ); + $key = "openssh-key-v1\0$key"; + + return "-----BEGIN OPENSSH PRIVATE KEY-----\n" . + chunk_split(base64_encode($key), 70, "\n") . + "-----END OPENSSH PRIVATE KEY-----\n"; + default: // eg. CRYPT_RSA_PRIVATE_FORMAT_PKCS1 + $components = array(); + foreach ($raw as $name => $value) { + $components[$name] = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($value)), $value); + } + + $RSAPrivateKey = implode('', $components); + + if ($num_primes > 2) { + $OtherPrimeInfos = ''; + for ($i = 3; $i <= $num_primes; $i++) { + // OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo + // + // OtherPrimeInfo ::= SEQUENCE { + // prime INTEGER, -- ri + // exponent INTEGER, -- di + // coefficient INTEGER -- ti + // } + $OtherPrimeInfo = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($primes[$i]->toBytes(true))), $primes[$i]->toBytes(true)); + $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($exponents[$i]->toBytes(true))), $exponents[$i]->toBytes(true)); + $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($coefficients[$i]->toBytes(true))), $coefficients[$i]->toBytes(true)); + $OtherPrimeInfos.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfo)), $OtherPrimeInfo); + } + $RSAPrivateKey.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfos)), $OtherPrimeInfos); + } + + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + + if ($this->privateKeyFormat == CRYPT_RSA_PRIVATE_FORMAT_PKCS8) { + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPrivateKey = pack( + 'Ca*a*Ca*a*', + CRYPT_RSA_ASN1_INTEGER, + "\01\00", + $rsaOID, + 4, + $this->_encodeLength(strlen($RSAPrivateKey)), + $RSAPrivateKey + ); + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + if (!empty($this->password) || is_string($this->password)) { + $salt = crypt_random_string(8); + $iterationCount = 2048; + + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $crypto = new Crypt_DES(); + $crypto->setPassword($this->password, 'pbkdf1', 'md5', $salt, $iterationCount); + $RSAPrivateKey = $crypto->encrypt($RSAPrivateKey); + + $parameters = pack( + 'Ca*a*Ca*N', + CRYPT_RSA_ASN1_OCTETSTRING, + $this->_encodeLength(strlen($salt)), + $salt, + CRYPT_RSA_ASN1_INTEGER, + $this->_encodeLength(4), + $iterationCount + ); + $pbeWithMD5AndDES_CBC = "\x2a\x86\x48\x86\xf7\x0d\x01\x05\x03"; + + $encryptionAlgorithm = pack( + 'Ca*a*Ca*a*', + CRYPT_RSA_ASN1_OBJECT, + $this->_encodeLength(strlen($pbeWithMD5AndDES_CBC)), + $pbeWithMD5AndDES_CBC, + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($parameters)), + $parameters + ); + + $RSAPrivateKey = pack( + 'Ca*a*Ca*a*', + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($encryptionAlgorithm)), + $encryptionAlgorithm, + CRYPT_RSA_ASN1_OCTETSTRING, + $this->_encodeLength(strlen($RSAPrivateKey)), + $RSAPrivateKey + ); + + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + + $RSAPrivateKey = "-----BEGIN ENCRYPTED PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END ENCRYPTED PRIVATE KEY-----'; + } else { + $RSAPrivateKey = "-----BEGIN PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END PRIVATE KEY-----'; + } + return $RSAPrivateKey; + } + + if (!empty($this->password) || is_string($this->password)) { + $iv = crypt_random_string(8); + $symkey = pack('H*', md5($this->password . $iv)); // symkey is short for symmetric key + $symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8); + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $des = new Crypt_TripleDES(); + $des->setKey($symkey); + $des->setIV($iv); + $iv = strtoupper(bin2hex($iv)); + $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" . + "Proc-Type: 4,ENCRYPTED\r\n" . + "DEK-Info: DES-EDE3-CBC,$iv\r\n" . + "\r\n" . + chunk_split(base64_encode($des->encrypt($RSAPrivateKey)), 64) . + '-----END RSA PRIVATE KEY-----'; + } else { + $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END RSA PRIVATE KEY-----'; + } + + return $RSAPrivateKey; + } + } + + /** + * Convert a public key to the appropriate format + * + * @access private + * @see self::setPublicKeyFormat() + * @param Math_BigInteger $n + * @param Math_BigInteger $e + * @return string|array + */ + function _convertPublicKey($n, $e) + { + $signed = $this->publicKeyFormat != CRYPT_RSA_PUBLIC_FORMAT_XML; + + $modulus = $n->toBytes($signed); + $publicExponent = $e->toBytes($signed); + + switch ($this->publicKeyFormat) { + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + return array('e' => $e->copy(), 'n' => $n->copy()); + case CRYPT_RSA_PUBLIC_FORMAT_XML: + return "\r\n" . + ' ' . base64_encode($modulus) . "\r\n" . + ' ' . base64_encode($publicExponent) . "\r\n" . + ''; + break; + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + // from : + // string "ssh-rsa" + // mpint e + // mpint n + $RSAPublicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publicExponent), $publicExponent, strlen($modulus), $modulus); + $RSAPublicKey = 'ssh-rsa ' . base64_encode($RSAPublicKey) . ' ' . $this->comment; + + return $RSAPublicKey; + default: // eg. CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW or CRYPT_RSA_PUBLIC_FORMAT_PKCS1 + // from : + // RSAPublicKey ::= SEQUENCE { + // modulus INTEGER, -- n + // publicExponent INTEGER -- e + // } + $components = array( + 'modulus' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($modulus)), $modulus), + 'publicExponent' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($publicExponent)), $publicExponent) + ); + + $RSAPublicKey = pack( + 'Ca*a*a*', + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($components['modulus']) + strlen($components['publicExponent'])), + $components['modulus'], + $components['publicExponent'] + ); + + if ($this->publicKeyFormat == CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW) { + $RSAPublicKey = "-----BEGIN RSA PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($RSAPublicKey), 64) . + '-----END RSA PUBLIC KEY-----'; + } else { + // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption. + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPublicKey = chr(0) . $RSAPublicKey; + $RSAPublicKey = chr(3) . $this->_encodeLength(strlen($RSAPublicKey)) . $RSAPublicKey; + + $RSAPublicKey = pack( + 'Ca*a*', + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($rsaOID . $RSAPublicKey)), + $rsaOID . $RSAPublicKey + ); + + $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($RSAPublicKey), 64) . + '-----END PUBLIC KEY-----'; + } + + return $RSAPublicKey; + } + } + + /** + * Break a public or private key down into its constituant components + * + * @access private + * @see self::_convertPublicKey() + * @see self::_convertPrivateKey() + * @param string $key + * @param int $type + * @return array + */ + function _parseKey($key, $type) + { + if ($type != CRYPT_RSA_PUBLIC_FORMAT_RAW && !is_string($key)) { + return false; + } + + switch ($type) { + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + if (!is_array($key)) { + return false; + } + $components = array(); + switch (true) { + case isset($key['e']): + $components['publicExponent'] = $key['e']->copy(); + break; + case isset($key['exponent']): + $components['publicExponent'] = $key['exponent']->copy(); + break; + case isset($key['publicExponent']): + $components['publicExponent'] = $key['publicExponent']->copy(); + break; + case isset($key[0]): + $components['publicExponent'] = $key[0]->copy(); + } + switch (true) { + case isset($key['n']): + $components['modulus'] = $key['n']->copy(); + break; + case isset($key['modulo']): + $components['modulus'] = $key['modulo']->copy(); + break; + case isset($key['modulus']): + $components['modulus'] = $key['modulus']->copy(); + break; + case isset($key[1]): + $components['modulus'] = $key[1]->copy(); + } + return isset($components['modulus']) && isset($components['publicExponent']) ? $components : false; + case CRYPT_RSA_PRIVATE_FORMAT_PKCS1: + case CRYPT_RSA_PRIVATE_FORMAT_PKCS8: + case CRYPT_RSA_PUBLIC_FORMAT_PKCS1: + /* Although PKCS#1 proposes a format that public and private keys can use, encrypting them is + "outside the scope" of PKCS#1. PKCS#1 then refers you to PKCS#12 and PKCS#15 if you're wanting to + protect private keys, however, that's not what OpenSSL* does. OpenSSL protects private keys by adding + two new "fields" to the key - DEK-Info and Proc-Type. These fields are discussed here: + + http://tools.ietf.org/html/rfc1421#section-4.6.1.1 + http://tools.ietf.org/html/rfc1421#section-4.6.1.3 + + DES-EDE3-CBC as an algorithm, however, is not discussed anywhere, near as I can tell. + DES-CBC and DES-EDE are discussed in RFC1423, however, DES-EDE3-CBC isn't, nor is its key derivation + function. As is, the definitive authority on this encoding scheme isn't the IETF but rather OpenSSL's + own implementation. ie. the implementation *is* the standard and any bugs that may exist in that + implementation are part of the standard, as well. + + * OpenSSL is the de facto standard. It's utilized by OpenSSH and other projects */ + if (preg_match('#DEK-Info: (.+),(.+)#', $key, $matches)) { + $iv = pack('H*', trim($matches[2])); + $symkey = pack('H*', md5($this->password . substr($iv, 0, 8))); // symkey is short for symmetric key + $symkey.= pack('H*', md5($symkey . $this->password . substr($iv, 0, 8))); + // remove the Proc-Type / DEK-Info sections as they're no longer needed + $key = preg_replace('#^(?:Proc-Type|DEK-Info): .*#m', '', $key); + $ciphertext = $this->_extractBER($key); + if ($ciphertext === false) { + $ciphertext = $key; + } + switch ($matches[1]) { + case 'AES-256-CBC': + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $crypto = new Crypt_AES(); + break; + case 'AES-128-CBC': + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $symkey = substr($symkey, 0, 16); + $crypto = new Crypt_AES(); + break; + case 'DES-EDE3-CFB': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CFB); + break; + case 'DES-EDE3-CBC': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $symkey = substr($symkey, 0, 24); + $crypto = new Crypt_TripleDES(); + break; + case 'DES-CBC': + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $crypto = new Crypt_DES(); + break; + default: + return false; + } + $crypto->setKey($symkey); + $crypto->setIV($iv); + $decoded = $crypto->decrypt($ciphertext); + } else { + $decoded = $this->_extractBER($key); + } + + if ($decoded !== false) { + $key = $decoded; + } + + $components = array(); + + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($key) != strlen($key)) { + return false; + } + + $tag = ord($this->_string_shift($key)); + /* intended for keys for which OpenSSL's asn1parse returns the following: + + 0:d=0 hl=4 l= 631 cons: SEQUENCE + 4:d=1 hl=2 l= 1 prim: INTEGER :00 + 7:d=1 hl=2 l= 13 cons: SEQUENCE + 9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption + 20:d=2 hl=2 l= 0 prim: NULL + 22:d=1 hl=4 l= 609 prim: OCTET STRING + + ie. PKCS8 keys*/ + + if ($tag == CRYPT_RSA_ASN1_INTEGER && substr($key, 0, 3) == "\x01\x00\x30") { + $this->_string_shift($key, 3); + $tag = CRYPT_RSA_ASN1_SEQUENCE; + } + + if ($tag == CRYPT_RSA_ASN1_SEQUENCE) { + $temp = $this->_string_shift($key, $this->_decodeLength($key)); + if (ord($this->_string_shift($temp)) != CRYPT_RSA_ASN1_OBJECT) { + return false; + } + $length = $this->_decodeLength($temp); + switch ($this->_string_shift($temp, $length)) { + case "\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01": // rsaEncryption + case "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0A": // rsaPSS + break; + case "\x2a\x86\x48\x86\xf7\x0d\x01\x05\x03": // pbeWithMD5AndDES-CBC + /* + PBEParameter ::= SEQUENCE { + salt OCTET STRING (SIZE(8)), + iterationCount INTEGER } + */ + if (ord($this->_string_shift($temp)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($temp) != strlen($temp)) { + return false; + } + $this->_string_shift($temp); // assume it's an octet string + $salt = $this->_string_shift($temp, $this->_decodeLength($temp)); + if (ord($this->_string_shift($temp)) != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + $this->_decodeLength($temp); + list(, $iterationCount) = unpack('N', str_pad($temp, 4, chr(0), STR_PAD_LEFT)); + $this->_string_shift($key); // assume it's an octet string + $length = $this->_decodeLength($key); + if (strlen($key) != $length) { + return false; + } + + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $crypto = new Crypt_DES(); + $crypto->setPassword($this->password, 'pbkdf1', 'md5', $salt, $iterationCount); + $key = $crypto->decrypt($key); + if ($key === false) { + return false; + } + return $this->_parseKey($key, CRYPT_RSA_PRIVATE_FORMAT_PKCS1); + default: + return false; + } + /* intended for keys for which OpenSSL's asn1parse returns the following: + + 0:d=0 hl=4 l= 290 cons: SEQUENCE + 4:d=1 hl=2 l= 13 cons: SEQUENCE + 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption + 17:d=2 hl=2 l= 0 prim: NULL + 19:d=1 hl=4 l= 271 prim: BIT STRING */ + $tag = ord($this->_string_shift($key)); // skip over the BIT STRING / OCTET STRING tag + $this->_decodeLength($key); // skip over the BIT STRING / OCTET STRING length + // "The initial octet shall encode, as an unsigned binary integer wtih bit 1 as the least significant bit, the number of + // unused bits in the final subsequent octet. The number shall be in the range zero to seven." + // -- http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf (section 8.6.2.2) + if ($tag == CRYPT_RSA_ASN1_BITSTRING) { + $this->_string_shift($key); + } + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($key) != strlen($key)) { + return false; + } + $tag = ord($this->_string_shift($key)); + } + if ($tag != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + + $length = $this->_decodeLength($key); + $temp = $this->_string_shift($key, $length); + if (strlen($temp) != 1 || ord($temp) > 2) { + $components['modulus'] = new Math_BigInteger($temp, 256); + $this->_string_shift($key); // skip over CRYPT_RSA_ASN1_INTEGER + $length = $this->_decodeLength($key); + $components[$type == CRYPT_RSA_PUBLIC_FORMAT_PKCS1 ? 'publicExponent' : 'privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + + return $components; + } + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + $length = $this->_decodeLength($key); + $components['modulus'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['publicExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + + if (!empty($key)) { + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + $this->_decodeLength($key); + while (!empty($key)) { + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + $this->_decodeLength($key); + $key = substr($key, 1); + $length = $this->_decodeLength($key); + $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['coefficients'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + } + } + + return $components; + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + $parts = explode(' ', $key, 3); + + $key = isset($parts[1]) ? base64_decode($parts[1]) : false; + if ($key === false) { + return false; + } + + $comment = isset($parts[2]) ? $parts[2] : false; + + $cleanup = substr($key, 0, 11) == "\0\0\0\7ssh-rsa"; + + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $publicExponent = new Math_BigInteger($this->_string_shift($key, $length), -256); + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $modulus = new Math_BigInteger($this->_string_shift($key, $length), -256); + + if ($cleanup && strlen($key)) { + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $realModulus = new Math_BigInteger($this->_string_shift($key, $length), -256); + return strlen($key) ? false : array( + 'modulus' => $realModulus, + 'publicExponent' => $modulus, + 'comment' => $comment + ); + } else { + return strlen($key) ? false : array( + 'modulus' => $modulus, + 'publicExponent' => $publicExponent, + 'comment' => $comment + ); + } + // http://www.w3.org/TR/xmldsig-core/#sec-RSAKeyValue + // http://en.wikipedia.org/wiki/XML_Signature + case CRYPT_RSA_PRIVATE_FORMAT_XML: + case CRYPT_RSA_PUBLIC_FORMAT_XML: + $this->components = array(); + + $xml = xml_parser_create('UTF-8'); + xml_set_object($xml, $this); + xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler'); + xml_set_character_data_handler($xml, '_data_handler'); + // add to account for "dangling" tags like ... that are sometimes added + if (!xml_parse($xml, '' . $key . '')) { + xml_parser_free($xml); + unset($xml); + return false; + } + + xml_parser_free($xml); + unset($xml); + + return isset($this->components['modulus']) && isset($this->components['publicExponent']) ? $this->components : false; + // from PuTTY's SSHPUBK.C + case CRYPT_RSA_PRIVATE_FORMAT_PUTTY: + $components = array(); + $key = preg_split('#\r\n|\r|\n#', $key); + $type = trim(preg_replace('#PuTTY-User-Key-File-2: (.+)#', '$1', $key[0])); + if ($type != 'ssh-rsa') { + return false; + } + $encryption = trim(preg_replace('#Encryption: (.+)#', '$1', $key[1])); + $comment = trim(preg_replace('#Comment: (.+)#', '$1', $key[2])); + + $publicLength = trim(preg_replace('#Public-Lines: (\d+)#', '$1', $key[3])); + $public = base64_decode(implode('', array_map('trim', array_slice($key, 4, $publicLength)))); + $public = substr($public, 11); + extract(unpack('Nlength', $this->_string_shift($public, 4))); + $components['publicExponent'] = new Math_BigInteger($this->_string_shift($public, $length), -256); + extract(unpack('Nlength', $this->_string_shift($public, 4))); + $components['modulus'] = new Math_BigInteger($this->_string_shift($public, $length), -256); + + $privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$publicLength + 4])); + $private = base64_decode(implode('', array_map('trim', array_slice($key, $publicLength + 5, $privateLength)))); + + switch ($encryption) { + case 'aes256-cbc': + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $symkey = ''; + $sequence = 0; + while (strlen($symkey) < 32) { + $temp = pack('Na*', $sequence++, $this->password); + $symkey.= pack('H*', sha1($temp)); + } + $symkey = substr($symkey, 0, 32); + $crypto = new Crypt_AES(); + } + + if ($encryption != 'none') { + $crypto->setKey($symkey); + $crypto->disablePadding(); + $private = $crypto->decrypt($private); + if ($private === false) { + return false; + } + } + + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['privateExponent'] = new Math_BigInteger($this->_string_shift($private, $length), -256); + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($private, $length), -256)); + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['primes'][] = new Math_BigInteger($this->_string_shift($private, $length), -256); + + $temp = $components['primes'][1]->subtract($this->one); + $components['exponents'] = array(1 => $components['publicExponent']->modInverse($temp)); + $temp = $components['primes'][2]->subtract($this->one); + $components['exponents'][] = $components['publicExponent']->modInverse($temp); + + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($private, $length), -256)); + + return $components; + case CRYPT_RSA_PRIVATE_FORMAT_OPENSSH: + $components = array(); + $decoded = $this->_extractBER($key); + $magic = $this->_string_shift($decoded, 15); + if ($magic !== "openssh-key-v1\0") { + return false; + } + $options = $this->_string_shift($decoded, 24); + // \0\0\0\4none = ciphername + // \0\0\0\4none = kdfname + // \0\0\0\0 = kdfoptions + // \0\0\0\1 = numkeys + if ($options != "\0\0\0\4none\0\0\0\4none\0\0\0\0\0\0\0\1") { + return false; + } + extract(unpack('Nlength', $this->_string_shift($decoded, 4))); + if (strlen($decoded) < $length) { + return false; + } + $publicKey = $this->_string_shift($decoded, $length); + extract(unpack('Nlength', $this->_string_shift($decoded, 4))); + if (strlen($decoded) < $length) { + return false; + } + $paddedKey = $this->_string_shift($decoded, $length); + + if ($this->_string_shift($publicKey, 11) !== "\0\0\0\7ssh-rsa") { + return false; + } + + $checkint1 = $this->_string_shift($paddedKey, 4); + $checkint2 = $this->_string_shift($paddedKey, 4); + if (strlen($checkint1) != 4 || $checkint1 !== $checkint2) { + return false; + } + + if ($this->_string_shift($paddedKey, 11) !== "\0\0\0\7ssh-rsa") { + return false; + } + + $values = array( + &$components['modulus'], + &$components['publicExponent'], + &$components['privateExponent'], + &$components['coefficients'][2], + &$components['primes'][1], + &$components['primes'][2] + ); + + for ($i = 0; $i < count($values); $i++) { + extract(unpack('Nlength', $this->_string_shift($paddedKey, 4))); + if (strlen($paddedKey) < $length) { + return false; + } + $values[$i] = new Math_BigInteger($this->_string_shift($paddedKey, $length), -256); + } + + extract(unpack('Nlength', $this->_string_shift($paddedKey, 4))); + if (strlen($paddedKey) < $length) { + return false; + } + $components['comment'] = $this->_string_shift($decoded, $length); + + $temp = $components['primes'][1]->subtract($this->one); + $components['exponents'] = array(1 => $components['publicExponent']->modInverse($temp)); + $temp = $components['primes'][2]->subtract($this->one); + $components['exponents'][] = $components['publicExponent']->modInverse($temp); + + return $components; + } + + return false; + } + + /** + * Returns the key size + * + * More specifically, this returns the size of the modulo in bits. + * + * @access public + * @return int + */ + function getSize() + { + return !isset($this->modulus) ? 0 : strlen($this->modulus->toBits()); + } + + /** + * Start Element Handler + * + * Called by xml_set_element_handler() + * + * @access private + * @param resource $parser + * @param string $name + * @param array $attribs + */ + function _start_element_handler($parser, $name, $attribs) + { + //$name = strtoupper($name); + switch ($name) { + case 'MODULUS': + $this->current = &$this->components['modulus']; + break; + case 'EXPONENT': + $this->current = &$this->components['publicExponent']; + break; + case 'P': + $this->current = &$this->components['primes'][1]; + break; + case 'Q': + $this->current = &$this->components['primes'][2]; + break; + case 'DP': + $this->current = &$this->components['exponents'][1]; + break; + case 'DQ': + $this->current = &$this->components['exponents'][2]; + break; + case 'INVERSEQ': + $this->current = &$this->components['coefficients'][2]; + break; + case 'D': + $this->current = &$this->components['privateExponent']; + } + $this->current = ''; + } + + /** + * Stop Element Handler + * + * Called by xml_set_element_handler() + * + * @access private + * @param resource $parser + * @param string $name + */ + function _stop_element_handler($parser, $name) + { + if (isset($this->current)) { + $this->current = new Math_BigInteger(base64_decode($this->current), 256); + unset($this->current); + } + } + + /** + * Data Handler + * + * Called by xml_set_character_data_handler() + * + * @access private + * @param resource $parser + * @param string $data + */ + function _data_handler($parser, $data) + { + if (!isset($this->current) || is_object($this->current)) { + return; + } + $this->current.= trim($data); + } + + /** + * Loads a public or private key + * + * Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed) + * + * @access public + * @param string $key + * @param int $type optional + */ + function loadKey($key, $type = false) + { + if (is_object($key) && strtolower(get_class($key)) == 'crypt_rsa') { + $this->privateKeyFormat = $key->privateKeyFormat; + $this->publicKeyFormat = $key->publicKeyFormat; + $this->k = $key->k; + $this->hLen = $key->hLen; + $this->sLen = $key->sLen; + $this->mgfHLen = $key->mgfHLen; + $this->encryptionMode = $key->encryptionMode; + $this->signatureMode = $key->signatureMode; + $this->password = $key->password; + $this->configFile = $key->configFile; + $this->comment = $key->comment; + + if (is_object($key->hash)) { + $this->hash = new Crypt_Hash($key->hash->getHash()); + } + if (is_object($key->mgfHash)) { + $this->mgfHash = new Crypt_Hash($key->mgfHash->getHash()); + } + + if (is_object($key->modulus)) { + $this->modulus = $key->modulus->copy(); + } + if (is_object($key->exponent)) { + $this->exponent = $key->exponent->copy(); + } + if (is_object($key->publicExponent)) { + $this->publicExponent = $key->publicExponent->copy(); + } + + $this->primes = array(); + $this->exponents = array(); + $this->coefficients = array(); + + foreach ($this->primes as $prime) { + $this->primes[] = $prime->copy(); + } + foreach ($this->exponents as $exponent) { + $this->exponents[] = $exponent->copy(); + } + foreach ($this->coefficients as $coefficient) { + $this->coefficients[] = $coefficient->copy(); + } + + return true; + } + + if ($type === false) { + $types = array( + CRYPT_RSA_PUBLIC_FORMAT_RAW, + CRYPT_RSA_PRIVATE_FORMAT_PKCS1, + CRYPT_RSA_PRIVATE_FORMAT_XML, + CRYPT_RSA_PRIVATE_FORMAT_PUTTY, + CRYPT_RSA_PUBLIC_FORMAT_OPENSSH, + CRYPT_RSA_PRIVATE_FORMAT_OPENSSH + ); + foreach ($types as $type) { + $components = $this->_parseKey($key, $type); + if ($components !== false) { + break; + } + } + } else { + $components = $this->_parseKey($key, $type); + } + + if ($components === false) { + $this->comment = null; + $this->modulus = null; + $this->k = null; + $this->exponent = null; + $this->primes = null; + $this->exponents = null; + $this->coefficients = null; + $this->publicExponent = null; + + return false; + } + + if (isset($components['comment']) && $components['comment'] !== false) { + $this->comment = $components['comment']; + } + $this->modulus = $components['modulus']; + $this->k = strlen($this->modulus->toBytes()); + $this->exponent = isset($components['privateExponent']) ? $components['privateExponent'] : $components['publicExponent']; + if (isset($components['primes'])) { + $this->primes = $components['primes']; + $this->exponents = $components['exponents']; + $this->coefficients = $components['coefficients']; + $this->publicExponent = $components['publicExponent']; + } else { + $this->primes = array(); + $this->exponents = array(); + $this->coefficients = array(); + $this->publicExponent = false; + } + + switch ($type) { + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + $this->setPublicKey(); + break; + case CRYPT_RSA_PRIVATE_FORMAT_PKCS1: + switch (true) { + case strpos($key, '-BEGIN PUBLIC KEY-') !== false: + case strpos($key, '-BEGIN RSA PUBLIC KEY-') !== false: + $this->setPublicKey(); + } + } + + return true; + } + + /** + * Sets the password + * + * Private keys can be encrypted with a password. To unset the password, pass in the empty string or false. + * Or rather, pass in $password such that empty($password) && !is_string($password) is true. + * + * @see self::createKey() + * @see self::loadKey() + * @access public + * @param string $password + */ + function setPassword($password = false) + { + $this->password = $password; + } + + /** + * Defines the public key + * + * Some private key formats define the public exponent and some don't. Those that don't define it are problematic when + * used in certain contexts. For example, in SSH-2, RSA authentication works by sending the public key along with a + * message signed by the private key to the server. The SSH-2 server looks the public key up in an index of public keys + * and if it's present then proceeds to verify the signature. Problem is, if your private key doesn't include the public + * exponent this won't work unless you manually add the public exponent. phpseclib tries to guess if the key being used + * is the public key but in the event that it guesses incorrectly you might still want to explicitly set the key as being + * public. + * + * Do note that when a new key is loaded the index will be cleared. + * + * Returns true on success, false on failure + * + * @see self::getPublicKey() + * @access public + * @param string $key optional + * @param int $type optional + * @return bool + */ + function setPublicKey($key = false, $type = false) + { + // if a public key has already been loaded return false + if (!empty($this->publicExponent)) { + return false; + } + + if ($key === false && !empty($this->modulus)) { + $this->publicExponent = $this->exponent; + return true; + } + + if ($type === false) { + $types = array( + CRYPT_RSA_PUBLIC_FORMAT_RAW, + CRYPT_RSA_PUBLIC_FORMAT_PKCS1, + CRYPT_RSA_PUBLIC_FORMAT_XML, + CRYPT_RSA_PUBLIC_FORMAT_OPENSSH + ); + foreach ($types as $type) { + $components = $this->_parseKey($key, $type); + if ($components !== false) { + break; + } + } + } else { + $components = $this->_parseKey($key, $type); + } + + if ($components === false) { + return false; + } + + if (empty($this->modulus) || !$this->modulus->equals($components['modulus'])) { + $this->modulus = $components['modulus']; + $this->exponent = $this->publicExponent = $components['publicExponent']; + return true; + } + + $this->publicExponent = $components['publicExponent']; + + return true; + } + + /** + * Defines the private key + * + * If phpseclib guessed a private key was a public key and loaded it as such it might be desirable to force + * phpseclib to treat the key as a private key. This function will do that. + * + * Do note that when a new key is loaded the index will be cleared. + * + * Returns true on success, false on failure + * + * @see self::getPublicKey() + * @access public + * @param string $key optional + * @param int $type optional + * @return bool + */ + function setPrivateKey($key = false, $type = false) + { + if ($key === false && !empty($this->publicExponent)) { + $this->publicExponent = false; + return true; + } + + $rsa = new Crypt_RSA(); + if (!$rsa->loadKey($key, $type)) { + return false; + } + $rsa->publicExponent = false; + + // don't overwrite the old key if the new key is invalid + $this->loadKey($rsa); + return true; + } + + /** + * Returns the public key + * + * The public key is only returned under two circumstances - if the private key had the public key embedded within it + * or if the public key was set via setPublicKey(). If the currently loaded key is supposed to be the public key this + * function won't return it since this library, for the most part, doesn't distinguish between public and private keys. + * + * @see self::getPublicKey() + * @access public + * @param int $type optional + */ + function getPublicKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS8) + { + if (empty($this->modulus) || empty($this->publicExponent)) { + return false; + } + + $oldFormat = $this->publicKeyFormat; + $this->publicKeyFormat = $type; + $temp = $this->_convertPublicKey($this->modulus, $this->publicExponent); + $this->publicKeyFormat = $oldFormat; + return $temp; + } + + /** + * Returns the public key's fingerprint + * + * The public key's fingerprint is returned, which is equivalent to running `ssh-keygen -lf rsa.pub`. If there is + * no public key currently loaded, false is returned. + * Example output (md5): "c1:b1:30:29:d7:b8:de:6c:97:77:10:d7:46:41:63:87" (as specified by RFC 4716) + * + * @access public + * @param string $algorithm The hashing algorithm to be used. Valid options are 'md5' and 'sha256'. False is returned + * for invalid values. + * @return mixed + */ + function getPublicKeyFingerprint($algorithm = 'md5') + { + if (empty($this->modulus) || empty($this->publicExponent)) { + return false; + } + + $modulus = $this->modulus->toBytes(true); + $publicExponent = $this->publicExponent->toBytes(true); + + $RSAPublicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publicExponent), $publicExponent, strlen($modulus), $modulus); + + switch ($algorithm) { + case 'sha256': + $hash = new Crypt_Hash('sha256'); + $base = base64_encode($hash->hash($RSAPublicKey)); + return substr($base, 0, strlen($base) - 1); + case 'md5': + return substr(chunk_split(md5($RSAPublicKey), 2, ':'), 0, -1); + default: + return false; + } + } + + /** + * Returns the private key + * + * The private key is only returned if the currently loaded key contains the constituent prime numbers. + * + * @see self::getPublicKey() + * @access public + * @param int $type optional + * @return mixed + */ + function getPrivateKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + { + if (empty($this->primes)) { + return false; + } + + $oldFormat = $this->privateKeyFormat; + $this->privateKeyFormat = $type; + $temp = $this->_convertPrivateKey($this->modulus, $this->publicExponent, $this->exponent, $this->primes, $this->exponents, $this->coefficients); + $this->privateKeyFormat = $oldFormat; + return $temp; + } + + /** + * Returns a minimalistic private key + * + * Returns the private key without the prime number constituants. Structurally identical to a public key that + * hasn't been set as the public key + * + * @see self::getPrivateKey() + * @access private + * @param int $mode optional + */ + function _getPrivatePublicKey($mode = CRYPT_RSA_PUBLIC_FORMAT_PKCS8) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + $oldFormat = $this->publicKeyFormat; + $this->publicKeyFormat = $mode; + $temp = $this->_convertPublicKey($this->modulus, $this->exponent); + $this->publicKeyFormat = $oldFormat; + return $temp; + } + + /** + * __toString() magic method + * + * @access public + * @return string + */ + function __toString() + { + $key = $this->getPrivateKey($this->privateKeyFormat); + if ($key !== false) { + return $key; + } + $key = $this->_getPrivatePublicKey($this->publicKeyFormat); + return $key !== false ? $key : ''; + } + + /** + * __clone() magic method + * + * @access public + * @return Crypt_RSA + */ + function __clone() + { + $key = new Crypt_RSA(); + $key->loadKey($this); + return $key; + } + + /** + * Generates the smallest and largest numbers requiring $bits bits + * + * @access private + * @param int $bits + * @return array + */ + function _generateMinMax($bits) + { + $bytes = $bits >> 3; + $min = str_repeat(chr(0), $bytes); + $max = str_repeat(chr(0xFF), $bytes); + $msb = $bits & 7; + if ($msb) { + $min = chr(1 << ($msb - 1)) . $min; + $max = chr((1 << $msb) - 1) . $max; + } else { + $min[0] = chr(0x80); + } + + return array( + 'min' => new Math_BigInteger($min, 256), + 'max' => new Math_BigInteger($max, 256) + ); + } + + /** + * DER-decode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @access private + * @param string $string + * @return int + */ + function _decodeLength(&$string) + { + $length = ord($this->_string_shift($string)); + if ($length & 0x80) { // definite length, long form + $length&= 0x7F; + $temp = $this->_string_shift($string, $length); + list(, $length) = unpack('N', substr(str_pad($temp, 4, chr(0), STR_PAD_LEFT), -4)); + } + return $length; + } + + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @access private + * @param int $length + * @return string + */ + function _encodeLength($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * Determines the private key format + * + * @see self::createKey() + * @access public + * @param int $format + */ + function setPrivateKeyFormat($format) + { + $this->privateKeyFormat = $format; + } + + /** + * Determines the public key format + * + * @see self::createKey() + * @access public + * @param int $format + */ + function setPublicKeyFormat($format) + { + $this->publicKeyFormat = $format; + } + + /** + * Determines which hashing function should be used + * + * Used with signature production / verification and (if the encryption mode is CRYPT_RSA_ENCRYPTION_OAEP) encryption and + * decryption. If $hash isn't supported, sha1 is used. + * + * @access public + * @param string $hash + */ + function setHash($hash) + { + // Crypt_Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. + switch ($hash) { + case 'md2': + case 'md5': + case 'sha1': + case 'sha256': + case 'sha384': + case 'sha512': + $this->hash = new Crypt_Hash($hash); + $this->hashName = $hash; + break; + default: + $this->hash = new Crypt_Hash('sha1'); + $this->hashName = 'sha1'; + } + $this->hLen = $this->hash->getLength(); + } + + /** + * Determines which hashing function should be used for the mask generation function + * + * The mask generation function is used by CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_SIGNATURE_PSS and although it's + * best if Hash and MGFHash are set to the same thing this is not a requirement. + * + * @access public + * @param string $hash + */ + function setMGFHash($hash) + { + // Crypt_Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. + switch ($hash) { + case 'md2': + case 'md5': + case 'sha1': + case 'sha256': + case 'sha384': + case 'sha512': + $this->mgfHash = new Crypt_Hash($hash); + break; + default: + $this->mgfHash = new Crypt_Hash('sha1'); + } + $this->mgfHLen = $this->mgfHash->getLength(); + } + + /** + * Determines the salt length + * + * To quote from {@link http://tools.ietf.org/html/rfc3447#page-38 RFC3447#page-38}: + * + * Typical salt lengths in octets are hLen (the length of the output + * of the hash function Hash) and 0. + * + * @access public + * @param int $sLen + */ + function setSaltLength($sLen) + { + $this->sLen = $sLen; + } + + /** + * Integer-to-Octet-String primitive + * + * See {@link http://tools.ietf.org/html/rfc3447#section-4.1 RFC3447#section-4.1}. + * + * @access private + * @param Math_BigInteger $x + * @param int $xLen + * @return string + */ + function _i2osp($x, $xLen) + { + $x = $x->toBytes(); + if (strlen($x) > $xLen) { + user_error('Integer too large'); + return false; + } + return str_pad($x, $xLen, chr(0), STR_PAD_LEFT); + } + + /** + * Octet-String-to-Integer primitive + * + * See {@link http://tools.ietf.org/html/rfc3447#section-4.2 RFC3447#section-4.2}. + * + * @access private + * @param int|string|resource $x + * @return Math_BigInteger + */ + function _os2ip($x) + { + return new Math_BigInteger($x, 256); + } + + /** + * Exponentiate with or without Chinese Remainder Theorem + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.2}. + * + * @access private + * @param Math_BigInteger $x + * @return Math_BigInteger + */ + function _exponentiate($x) + { + switch (true) { + case empty($this->primes): + case $this->primes[1]->equals($this->zero): + case empty($this->coefficients): + case $this->coefficients[2]->equals($this->zero): + case empty($this->exponents): + case $this->exponents[1]->equals($this->zero): + return $x->modPow($this->exponent, $this->modulus); + } + + $num_primes = count($this->primes); + + if (defined('CRYPT_RSA_DISABLE_BLINDING')) { + $m_i = array( + 1 => $x->modPow($this->exponents[1], $this->primes[1]), + 2 => $x->modPow($this->exponents[2], $this->primes[2]) + ); + $h = $m_i[1]->subtract($m_i[2]); + $h = $h->multiply($this->coefficients[2]); + list(, $h) = $h->divide($this->primes[1]); + $m = $m_i[2]->add($h->multiply($this->primes[2])); + + $r = $this->primes[1]; + for ($i = 3; $i <= $num_primes; $i++) { + $m_i = $x->modPow($this->exponents[$i], $this->primes[$i]); + + $r = $r->multiply($this->primes[$i - 1]); + + $h = $m_i->subtract($m); + $h = $h->multiply($this->coefficients[$i]); + list(, $h) = $h->divide($this->primes[$i]); + + $m = $m->add($r->multiply($h)); + } + } else { + $smallest = $this->primes[1]; + for ($i = 2; $i <= $num_primes; $i++) { + if ($smallest->compare($this->primes[$i]) > 0) { + $smallest = $this->primes[$i]; + } + } + + $one = new Math_BigInteger(1); + + $r = $one->random($one, $smallest->subtract($one)); + + $m_i = array( + 1 => $this->_blind($x, $r, 1), + 2 => $this->_blind($x, $r, 2) + ); + $h = $m_i[1]->subtract($m_i[2]); + $h = $h->multiply($this->coefficients[2]); + list(, $h) = $h->divide($this->primes[1]); + $m = $m_i[2]->add($h->multiply($this->primes[2])); + + $r = $this->primes[1]; + for ($i = 3; $i <= $num_primes; $i++) { + $m_i = $this->_blind($x, $r, $i); + + $r = $r->multiply($this->primes[$i - 1]); + + $h = $m_i->subtract($m); + $h = $h->multiply($this->coefficients[$i]); + list(, $h) = $h->divide($this->primes[$i]); + + $m = $m->add($r->multiply($h)); + } + } + + return $m; + } + + /** + * Performs RSA Blinding + * + * Protects against timing attacks by employing RSA Blinding. + * Returns $x->modPow($this->exponents[$i], $this->primes[$i]) + * + * @access private + * @param Math_BigInteger $x + * @param Math_BigInteger $r + * @param int $i + * @return Math_BigInteger + */ + function _blind($x, $r, $i) + { + $x = $x->multiply($r->modPow($this->publicExponent, $this->primes[$i])); + $x = $x->modPow($this->exponents[$i], $this->primes[$i]); + + $r = $r->modInverse($this->primes[$i]); + $x = $x->multiply($r); + list(, $x) = $x->divide($this->primes[$i]); + + return $x; + } + + /** + * Performs blinded RSA equality testing + * + * Protects against a particular type of timing attack described. + * + * See {@link http://codahale.com/a-lesson-in-timing-attacks/ A Lesson In Timing Attacks (or, Don't use MessageDigest.isEquals)} + * + * Thanks for the heads up singpolyma! + * + * @access private + * @param string $x + * @param string $y + * @return bool + */ + function _equals($x, $y) + { + if (function_exists('hash_equals')) { + return hash_equals($x, $y); + } + + if (strlen($x) != strlen($y)) { + return false; + } + + $result = "\0"; + $x^= $y; + for ($i = 0; $i < strlen($x); $i++) { + $result|= $x[$i]; + } + + return $result === "\0"; + } + + /** + * RSAEP + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.1}. + * + * @access private + * @param Math_BigInteger $m + * @return Math_BigInteger + */ + function _rsaep($m) + { + if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) { + user_error('Message representative out of range'); + return false; + } + return $this->_exponentiate($m); + } + + /** + * RSADP + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.2 RFC3447#section-5.1.2}. + * + * @access private + * @param Math_BigInteger $c + * @return Math_BigInteger + */ + function _rsadp($c) + { + if ($c->compare($this->zero) < 0 || $c->compare($this->modulus) > 0) { + user_error('Ciphertext representative out of range'); + return false; + } + return $this->_exponentiate($c); + } + + /** + * RSASP1 + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.1 RFC3447#section-5.2.1}. + * + * @access private + * @param Math_BigInteger $m + * @return Math_BigInteger + */ + function _rsasp1($m) + { + if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) { + user_error('Message representative out of range'); + return false; + } + return $this->_exponentiate($m); + } + + /** + * RSAVP1 + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.2 RFC3447#section-5.2.2}. + * + * @access private + * @param Math_BigInteger $s + * @return Math_BigInteger + */ + function _rsavp1($s) + { + if ($s->compare($this->zero) < 0 || $s->compare($this->modulus) > 0) { + user_error('Signature representative out of range'); + return false; + } + return $this->_exponentiate($s); + } + + /** + * MGF1 + * + * See {@link http://tools.ietf.org/html/rfc3447#appendix-B.2.1 RFC3447#appendix-B.2.1}. + * + * @access private + * @param string $mgfSeed + * @param int $maskLen + * @return string + */ + function _mgf1($mgfSeed, $maskLen) + { + // if $maskLen would yield strings larger than 4GB, PKCS#1 suggests a "Mask too long" error be output. + + $t = ''; + $count = ceil($maskLen / $this->mgfHLen); + for ($i = 0; $i < $count; $i++) { + $c = pack('N', $i); + $t.= $this->mgfHash->hash($mgfSeed . $c); + } + + return substr($t, 0, $maskLen); + } + + /** + * RSAES-OAEP-ENCRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.1 RFC3447#section-7.1.1} and + * {http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding OAES}. + * + * @access private + * @param string $m + * @param string $l + * @return string + */ + function _rsaes_oaep_encrypt($m, $l = '') + { + $mLen = strlen($m); + + // Length checking + + // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + if ($mLen > $this->k - 2 * $this->hLen - 2) { + user_error('Message too long'); + return false; + } + + // EME-OAEP encoding + + $lHash = $this->hash->hash($l); + $ps = str_repeat(chr(0), $this->k - $mLen - 2 * $this->hLen - 2); + $db = $lHash . $ps . chr(1) . $m; + $seed = crypt_random_string($this->hLen); + $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); + $maskedDB = $db ^ $dbMask; + $seedMask = $this->_mgf1($maskedDB, $this->hLen); + $maskedSeed = $seed ^ $seedMask; + $em = chr(0) . $maskedSeed . $maskedDB; + + // RSA encryption + + $m = $this->_os2ip($em); + $c = $this->_rsaep($m); + $c = $this->_i2osp($c, $this->k); + + // Output the ciphertext C + + return $c; + } + + /** + * RSAES-OAEP-DECRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.2 RFC3447#section-7.1.2}. The fact that the error + * messages aren't distinguishable from one another hinders debugging, but, to quote from RFC3447#section-7.1.2: + * + * Note. Care must be taken to ensure that an opponent cannot + * distinguish the different error conditions in Step 3.g, whether by + * error message or timing, or, more generally, learn partial + * information about the encoded message EM. Otherwise an opponent may + * be able to obtain useful information about the decryption of the + * ciphertext C, leading to a chosen-ciphertext attack such as the one + * observed by Manger [36]. + * + * As for $l... to quote from {@link http://tools.ietf.org/html/rfc3447#page-17 RFC3447#page-17}: + * + * Both the encryption and the decryption operations of RSAES-OAEP take + * the value of a label L as input. In this version of PKCS #1, L is + * the empty string; other uses of the label are outside the scope of + * this document. + * + * @access private + * @param string $c + * @param string $l + * @return string + */ + function _rsaes_oaep_decrypt($c, $l = '') + { + // Length checking + + // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + if (strlen($c) != $this->k || $this->k < 2 * $this->hLen + 2) { + user_error('Decryption error'); + return false; + } + + // RSA decryption + + $c = $this->_os2ip($c); + $m = $this->_rsadp($c); + if ($m === false) { + user_error('Decryption error'); + return false; + } + $em = $this->_i2osp($m, $this->k); + + // EME-OAEP decoding + + $lHash = $this->hash->hash($l); + $y = ord($em[0]); + $maskedSeed = substr($em, 1, $this->hLen); + $maskedDB = substr($em, $this->hLen + 1); + $seedMask = $this->_mgf1($maskedDB, $this->hLen); + $seed = $maskedSeed ^ $seedMask; + $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); + $db = $maskedDB ^ $dbMask; + $lHash2 = substr($db, 0, $this->hLen); + $m = substr($db, $this->hLen); + $hashesMatch = $this->_equals($lHash, $lHash2); + $leadingZeros = 1; + $patternMatch = 0; + $offset = 0; + for ($i = 0; $i < strlen($m); $i++) { + $patternMatch|= $leadingZeros & ($m[$i] === "\1"); + $leadingZeros&= $m[$i] === "\0"; + $offset+= $patternMatch ? 0 : 1; + } + + // we do | instead of || to avoid https://en.wikipedia.org/wiki/Short-circuit_evaluation + // to protect against timing attacks + if (!$hashesMatch | !$patternMatch) { + user_error('Decryption error'); + return false; + } + + // Output the message M + + return substr($m, $offset + 1); + } + + /** + * Raw Encryption / Decryption + * + * Doesn't use padding and is not recommended. + * + * @access private + * @param string $m + * @return string + */ + function _raw_encrypt($m) + { + $temp = $this->_os2ip($m); + $temp = $this->_rsaep($temp); + return $this->_i2osp($temp, $this->k); + } + + /** + * RSAES-PKCS1-V1_5-ENCRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.1 RFC3447#section-7.2.1}. + * + * @access private + * @param string $m + * @return string + */ + function _rsaes_pkcs1_v1_5_encrypt($m) + { + $mLen = strlen($m); + + // Length checking + + if ($mLen > $this->k - 11) { + user_error('Message too long'); + return false; + } + + // EME-PKCS1-v1_5 encoding + + $psLen = $this->k - $mLen - 3; + $ps = ''; + while (strlen($ps) != $psLen) { + $temp = crypt_random_string($psLen - strlen($ps)); + $temp = str_replace("\x00", '', $temp); + $ps.= $temp; + } + $type = 2; + // see the comments of _rsaes_pkcs1_v1_5_decrypt() to understand why this is being done + if (defined('CRYPT_RSA_PKCS15_COMPAT') && (!isset($this->publicExponent) || $this->exponent !== $this->publicExponent)) { + $type = 1; + // "The padding string PS shall consist of k-3-||D|| octets. ... for block type 01, they shall have value FF" + $ps = str_repeat("\xFF", $psLen); + } + $em = chr(0) . chr($type) . $ps . chr(0) . $m; + + // RSA encryption + $m = $this->_os2ip($em); + $c = $this->_rsaep($m); + $c = $this->_i2osp($c, $this->k); + + // Output the ciphertext C + + return $c; + } + + /** + * RSAES-PKCS1-V1_5-DECRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.2 RFC3447#section-7.2.2}. + * + * For compatibility purposes, this function departs slightly from the description given in RFC3447. + * The reason being that RFC2313#section-8.1 (PKCS#1 v1.5) states that ciphertext's encrypted by the + * private key should have the second byte set to either 0 or 1 and that ciphertext's encrypted by the + * public key should have the second byte set to 2. In RFC3447 (PKCS#1 v2.1), the second byte is supposed + * to be 2 regardless of which key is used. For compatibility purposes, we'll just check to make sure the + * second byte is 2 or less. If it is, we'll accept the decrypted string as valid. + * + * As a consequence of this, a private key encrypted ciphertext produced with Crypt_RSA may not decrypt + * with a strictly PKCS#1 v1.5 compliant RSA implementation. Public key encrypted ciphertext's should but + * not private key encrypted ciphertext's. + * + * @access private + * @param string $c + * @return string + */ + function _rsaes_pkcs1_v1_5_decrypt($c) + { + // Length checking + + if (strlen($c) != $this->k) { // or if k < 11 + user_error('Decryption error'); + return false; + } + + // RSA decryption + + $c = $this->_os2ip($c); + $m = $this->_rsadp($c); + + if ($m === false) { + user_error('Decryption error'); + return false; + } + $em = $this->_i2osp($m, $this->k); + + // EME-PKCS1-v1_5 decoding + + if (ord($em[0]) != 0 || ord($em[1]) > 2) { + user_error('Decryption error'); + return false; + } + + $ps = substr($em, 2, strpos($em, chr(0), 2) - 2); + $m = substr($em, strlen($ps) + 3); + + if (strlen($ps) < 8) { + user_error('Decryption error'); + return false; + } + + // Output M + + return $m; + } + + /** + * EMSA-PSS-ENCODE + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.1 RFC3447#section-9.1.1}. + * + * @access private + * @param string $m + * @param int $emBits + */ + function _emsa_pss_encode($m, $emBits) + { + // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8) + $sLen = $this->sLen !== null ? $this->sLen : $this->hLen; + + $mHash = $this->hash->hash($m); + if ($emLen < $this->hLen + $sLen + 2) { + user_error('Encoding error'); + return false; + } + + $salt = crypt_random_string($sLen); + $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; + $h = $this->hash->hash($m2); + $ps = str_repeat(chr(0), $emLen - $sLen - $this->hLen - 2); + $db = $ps . chr(1) . $salt; + $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); + $maskedDB = $db ^ $dbMask; + $maskedDB[0] = ~chr(0xFF << ($emBits & 7)) & $maskedDB[0]; + $em = $maskedDB . $h . chr(0xBC); + + return $em; + } + + /** + * EMSA-PSS-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.2 RFC3447#section-9.1.2}. + * + * @access private + * @param string $m + * @param string $em + * @param int $emBits + * @return string + */ + function _emsa_pss_verify($m, $em, $emBits) + { + // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + $emLen = ($emBits + 7) >> 3; // ie. ceil($emBits / 8); + $sLen = $this->sLen !== null ? $this->sLen : $this->hLen; + + $mHash = $this->hash->hash($m); + if ($emLen < $this->hLen + $sLen + 2) { + return false; + } + + if ($em[strlen($em) - 1] != chr(0xBC)) { + return false; + } + + $maskedDB = substr($em, 0, -$this->hLen - 1); + $h = substr($em, -$this->hLen - 1, $this->hLen); + $temp = chr(0xFF << ($emBits & 7)); + if ((~$maskedDB[0] & $temp) != $temp) { + return false; + } + $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); + $db = $maskedDB ^ $dbMask; + $db[0] = ~chr(0xFF << ($emBits & 7)) & $db[0]; + $temp = $emLen - $this->hLen - $sLen - 2; + if (substr($db, 0, $temp) != str_repeat(chr(0), $temp) || ord($db[$temp]) != 1) { + return false; + } + $salt = substr($db, $temp + 1); // should be $sLen long + $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; + $h2 = $this->hash->hash($m2); + return $this->_equals($h, $h2); + } + + /** + * RSASSA-PSS-SIGN + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.1 RFC3447#section-8.1.1}. + * + * @access private + * @param string $m + * @return string + */ + function _rsassa_pss_sign($m) + { + // EMSA-PSS encoding + + $em = $this->_emsa_pss_encode($m, 8 * $this->k - 1); + + // RSA signature + + $m = $this->_os2ip($em); + $s = $this->_rsasp1($m); + $s = $this->_i2osp($s, $this->k); + + // Output the signature S + + return $s; + } + + /** + * RSASSA-PSS-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.2 RFC3447#section-8.1.2}. + * + * @access private + * @param string $m + * @param string $s + * @return string + */ + function _rsassa_pss_verify($m, $s) + { + // Length checking + + if (strlen($s) != $this->k) { + user_error('Invalid signature'); + return false; + } + + // RSA verification + + $modBits = strlen($this->modulus->toBits()); + + $s2 = $this->_os2ip($s); + $m2 = $this->_rsavp1($s2); + if ($m2 === false) { + user_error('Invalid signature'); + return false; + } + $em = $this->_i2osp($m2, $this->k); + if ($em === false) { + user_error('Invalid signature'); + return false; + } + + // EMSA-PSS verification + + return $this->_emsa_pss_verify($m, $em, $modBits - 1); + } + + /** + * EMSA-PKCS1-V1_5-ENCODE + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.2 RFC3447#section-9.2}. + * + * @access private + * @param string $m + * @param int $emLen + * @return string + */ + function _emsa_pkcs1_v1_5_encode($m, $emLen) + { + $h = $this->hash->hash($m); + if ($h === false) { + return false; + } + + // see http://tools.ietf.org/html/rfc3447#page-43 + switch ($this->hashName) { + case 'md2': + $t = pack('H*', '3020300c06082a864886f70d020205000410'); + break; + case 'md5': + $t = pack('H*', '3020300c06082a864886f70d020505000410'); + break; + case 'sha1': + $t = pack('H*', '3021300906052b0e03021a05000414'); + break; + case 'sha256': + $t = pack('H*', '3031300d060960864801650304020105000420'); + break; + case 'sha384': + $t = pack('H*', '3041300d060960864801650304020205000430'); + break; + case 'sha512': + $t = pack('H*', '3051300d060960864801650304020305000440'); + } + $t.= $h; + $tLen = strlen($t); + + if ($emLen < $tLen + 11) { + user_error('Intended encoded message length too short'); + return false; + } + + $ps = str_repeat(chr(0xFF), $emLen - $tLen - 3); + + $em = "\0\1$ps\0$t"; + + return $em; + } + + /** + * EMSA-PKCS1-V1_5-ENCODE (without NULL) + * + * Quoting https://tools.ietf.org/html/rfc8017#page-65, + * + * "The parameters field associated with id-sha1, id-sha224, id-sha256, + * id-sha384, id-sha512, id-sha512/224, and id-sha512/256 should + * generally be omitted, but if present, it shall have a value of type + * NULL" + * + * @access private + * @param string $m + * @param int $emLen + * @return string + */ + function _emsa_pkcs1_v1_5_encode_without_null($m, $emLen) + { + $h = $this->hash->hash($m); + if ($h === false) { + return false; + } + + switch ($this->hashName) { + case 'sha1': + $t = pack('H*', '301f300706052b0e03021a0414'); + break; + case 'sha256': + $t = pack('H*', '302f300b06096086480165030402010420'); + break; + case 'sha384': + $t = pack('H*', '303f300b06096086480165030402020430'); + break; + case 'sha512': + $t = pack('H*', '304f300b06096086480165030402030440'); + break; + default: + return false; + } + $t.= $h; + $tLen = strlen($t); + + if ($emLen < $tLen + 11) { + user_error('Intended encoded message length too short'); + return false; + } + + $ps = str_repeat(chr(0xFF), $emLen - $tLen - 3); + + $em = "\0\1$ps\0$t"; + + return $em; + } + + /** + * RSASSA-PKCS1-V1_5-SIGN + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.1 RFC3447#section-8.2.1}. + * + * @access private + * @param string $m + * @return string + */ + function _rsassa_pkcs1_v1_5_sign($m) + { + // EMSA-PKCS1-v1_5 encoding + + $em = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); + if ($em === false) { + user_error('RSA modulus too short'); + return false; + } + + // RSA signature + + $m = $this->_os2ip($em); + $s = $this->_rsasp1($m); + $s = $this->_i2osp($s, $this->k); + + // Output the signature S + + return $s; + } + + /** + * RSASSA-PKCS1-V1_5-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.2 RFC3447#section-8.2.2}. + * + * @access private + * @param string $m + * @param string $s + * @return string + */ + function _rsassa_pkcs1_v1_5_verify($m, $s) + { + // Length checking + + if (strlen($s) != $this->k) { + user_error('Invalid signature'); + return false; + } + + // RSA verification + + $s = $this->_os2ip($s); + $m2 = $this->_rsavp1($s); + if ($m2 === false) { + user_error('Invalid signature'); + return false; + } + $em = $this->_i2osp($m2, $this->k); + if ($em === false) { + user_error('Invalid signature'); + return false; + } + + // EMSA-PKCS1-v1_5 encoding + + $em2 = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); + $em3 = $this->_emsa_pkcs1_v1_5_encode_without_null($m, $this->k); + + if ($em2 === false && $em3 === false) { + user_error('RSA modulus too short'); + return false; + } + + // Compare + + return ($em2 !== false && $this->_equals($em, $em2)) || + ($em3 !== false && $this->_equals($em, $em3)); + } + + /** + * Set Encryption Mode + * + * Valid values include CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1. + * + * @access public + * @param int $mode + */ + function setEncryptionMode($mode) + { + $this->encryptionMode = $mode; + } + + /** + * Set Signature Mode + * + * Valid values include CRYPT_RSA_SIGNATURE_PSS and CRYPT_RSA_SIGNATURE_PKCS1 + * + * @access public + * @param int $mode + */ + function setSignatureMode($mode) + { + $this->signatureMode = $mode; + } + + /** + * Set public key comment. + * + * @access public + * @param string $comment + */ + function setComment($comment) + { + $this->comment = $comment; + } + + /** + * Get public key comment. + * + * @access public + * @return string + */ + function getComment() + { + return $this->comment; + } + + /** + * Encryption + * + * Both CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1 both place limits on how long $plaintext can be. + * If $plaintext exceeds those limits it will be broken up so that it does and the resultant ciphertext's will + * be concatenated together. + * + * @see self::decrypt() + * @access public + * @param string $plaintext + * @return string + */ + function encrypt($plaintext) + { + switch ($this->encryptionMode) { + case CRYPT_RSA_ENCRYPTION_NONE: + $plaintext = str_split($plaintext, $this->k); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_raw_encrypt($m); + } + return $ciphertext; + case CRYPT_RSA_ENCRYPTION_PKCS1: + $length = $this->k - 11; + if ($length <= 0) { + return false; + } + + $plaintext = str_split($plaintext, $length); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_rsaes_pkcs1_v1_5_encrypt($m); + } + return $ciphertext; + //case CRYPT_RSA_ENCRYPTION_OAEP: + default: + $length = $this->k - 2 * $this->hLen - 2; + if ($length <= 0) { + return false; + } + + $plaintext = str_split($plaintext, $length); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_rsaes_oaep_encrypt($m); + } + return $ciphertext; + } + } + + /** + * Decryption + * + * @see self::encrypt() + * @access public + * @param string $ciphertext + * @return string + */ + function decrypt($ciphertext) + { + if ($this->k <= 0) { + return false; + } + + $ciphertext = str_split($ciphertext, $this->k); + $ciphertext[count($ciphertext) - 1] = str_pad($ciphertext[count($ciphertext) - 1], $this->k, chr(0), STR_PAD_LEFT); + + $plaintext = ''; + + switch ($this->encryptionMode) { + case CRYPT_RSA_ENCRYPTION_NONE: + $decrypt = '_raw_encrypt'; + break; + case CRYPT_RSA_ENCRYPTION_PKCS1: + $decrypt = '_rsaes_pkcs1_v1_5_decrypt'; + break; + //case CRYPT_RSA_ENCRYPTION_OAEP: + default: + $decrypt = '_rsaes_oaep_decrypt'; + } + + foreach ($ciphertext as $c) { + $temp = $this->$decrypt($c); + if ($temp === false) { + return false; + } + $plaintext.= $temp; + } + + return $plaintext; + } + + /** + * Create a signature + * + * @see self::verify() + * @access public + * @param string $message + * @return string + */ + function sign($message) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + switch ($this->signatureMode) { + case CRYPT_RSA_SIGNATURE_PKCS1: + return $this->_rsassa_pkcs1_v1_5_sign($message); + //case CRYPT_RSA_SIGNATURE_PSS: + default: + return $this->_rsassa_pss_sign($message); + } + } + + /** + * Verifies a signature + * + * @see self::sign() + * @access public + * @param string $message + * @param string $signature + * @return bool + */ + function verify($message, $signature) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + switch ($this->signatureMode) { + case CRYPT_RSA_SIGNATURE_PKCS1: + return $this->_rsassa_pkcs1_v1_5_verify($message, $signature); + //case CRYPT_RSA_SIGNATURE_PSS: + default: + return $this->_rsassa_pss_verify($message, $signature); + } + } + + /** + * Extract raw BER from Base64 encoding + * + * @access private + * @param string $str + * @return string + */ + function _extractBER($str) + { + /* X.509 certs are assumed to be base64 encoded but sometimes they'll have additional things in them + * above and beyond the ceritificate. + * ie. some may have the following preceding the -----BEGIN CERTIFICATE----- line: + * + * Bag Attributes + * localKeyID: 01 00 00 00 + * subject=/O=organization/OU=org unit/CN=common name + * issuer=/O=organization/CN=common name + */ + $temp = preg_replace('#.*?^-+[^-]+-+[\r\n ]*$#ms', '', $str, 1); + // remove the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- stuff + $temp = preg_replace('#-+[^-]+-+#', '', $temp); + // remove new lines + $temp = str_replace(array("\r", "\n", ' '), '', $temp); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + return $temp != false ? $temp : $str; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/Random.php b/app/Http/Controllers/dgaAdmin/Crypt/Random.php new file mode 100644 index 0000000..6230a55 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/Random.php @@ -0,0 +1,341 @@ + + * + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Random + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +// laravel is a PHP framework that utilizes phpseclib. laravel workbenches may, independently, +// have phpseclib as a requirement as well. if you're developing such a program you may encounter +// a "Cannot redeclare crypt_random_string()" error. +if (!function_exists('crypt_random_string')) { + /** + * "Is Windows" test + * + * @access private + */ + define('CRYPT_RANDOM_IS_WINDOWS', strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'); + + /** + * Generate a random string. + * + * Although microoptimizations are generally discouraged as they impair readability this function is ripe with + * microoptimizations because this function has the potential of being called a huge number of times. + * eg. for RSA key generation. + * + * @param int $length + * @return string + * @access public + */ + function crypt_random_string($length) + { + if (!$length) { + return ''; + } + + if (CRYPT_RANDOM_IS_WINDOWS) { + // method 1. prior to PHP 5.3, mcrypt_create_iv() would call rand() on windows + if (extension_loaded('mcrypt') && version_compare(PHP_VERSION, '5.3.0', '>=')) { + return @mcrypt_create_iv($length); + } + // method 2. openssl_random_pseudo_bytes was introduced in PHP 5.3.0 but prior to PHP 5.3.4 there was, + // to quote , "possible blocking behavior". as of 5.3.4 + // openssl_random_pseudo_bytes and mcrypt_create_iv do the exact same thing on Windows. ie. they both + // call php_win32_get_random_bytes(): + // + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/openssl/openssl.c#L5008 + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1392 + // + // php_win32_get_random_bytes() is defined thusly: + // + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/win32/winutil.c#L80 + // + // we're calling it, all the same, in the off chance that the mcrypt extension is not available + if (extension_loaded('openssl') && version_compare(PHP_VERSION, '5.3.4', '>=')) { + return openssl_random_pseudo_bytes($length); + } + } else { + // method 1. the fastest + if (extension_loaded('openssl') && version_compare(PHP_VERSION, '5.3.0', '>=')) { + return openssl_random_pseudo_bytes($length); + } + // method 2 + static $fp = true; + if ($fp === true) { + // warning's will be output unles the error suppression operator is used. errors such as + // "open_basedir restriction in effect", "Permission denied", "No such file or directory", etc. + $fp = @fopen('/dev/urandom', 'rb'); + } + if ($fp !== true && $fp !== false) { // surprisingly faster than !is_bool() or is_resource() + $temp = fread($fp, $length); + if (strlen($temp) == $length) { + return $temp; + } + } + // method 3. pretty much does the same thing as method 2 per the following url: + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1391 + // surprisingly slower than method 2. maybe that's because mcrypt_create_iv does a bunch of error checking that we're + // not doing. regardless, this'll only be called if this PHP script couldn't open /dev/urandom due to open_basedir + // restrictions or some such + if (extension_loaded('mcrypt')) { + return @mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); + } + } + // at this point we have no choice but to use a pure-PHP CSPRNG + + // cascade entropy across multiple PHP instances by fixing the session and collecting all + // environmental variables, including the previous session data and the current session + // data. + // + // mt_rand seeds itself by looking at the PID and the time, both of which are (relatively) + // easy to guess at. linux uses mouse clicks, keyboard timings, etc, as entropy sources, but + // PHP isn't low level to be able to use those as sources and on a web server there's not likely + // going to be a ton of keyboard or mouse action. web servers do have one thing that we can use + // however, a ton of people visiting the website. obviously you don't want to base your seeding + // soley on parameters a potential attacker sends but (1) not everything in $_SERVER is controlled + // by the user and (2) this isn't just looking at the data sent by the current user - it's based + // on the data sent by all users. one user requests the page and a hash of their info is saved. + // another user visits the page and the serialization of their data is utilized along with the + // server envirnment stuff and a hash of the previous http request data (which itself utilizes + // a hash of the session data before that). certainly an attacker should be assumed to have + // full control over his own http requests. he, however, is not going to have control over + // everyone's http requests. + static $crypto = false, $v; + if ($crypto === false) { + // save old session data + $old_session_id = session_id(); + $old_use_cookies = ini_get('session.use_cookies'); + $old_session_cache_limiter = session_cache_limiter(); + $_OLD_SESSION = isset($_SESSION) ? $_SESSION : false; + if ($old_session_id != '') { + session_write_close(); + } + + session_id(1); + ini_set('session.use_cookies', 0); + session_cache_limiter(''); + session_start(); + + $v = $seed = $_SESSION['seed'] = pack('H*', sha1( + (isset($_SERVER) ? phpseclib_safe_serialize($_SERVER) : '') . + (isset($_POST) ? phpseclib_safe_serialize($_POST) : '') . + (isset($_GET) ? phpseclib_safe_serialize($_GET) : '') . + (isset($_COOKIE) ? phpseclib_safe_serialize($_COOKIE) : '') . + phpseclib_safe_serialize($GLOBALS) . + phpseclib_safe_serialize($_SESSION) . + phpseclib_safe_serialize($_OLD_SESSION) + )); + if (!isset($_SESSION['count'])) { + $_SESSION['count'] = 0; + } + $_SESSION['count']++; + + session_write_close(); + + // restore old session data + if ($old_session_id != '') { + session_id($old_session_id); + session_start(); + ini_set('session.use_cookies', $old_use_cookies); + session_cache_limiter($old_session_cache_limiter); + } else { + if ($_OLD_SESSION !== false) { + $_SESSION = $_OLD_SESSION; + unset($_OLD_SESSION); + } else { + unset($_SESSION); + } + } + + // in SSH2 a shared secret and an exchange hash are generated through the key exchange process. + // the IV client to server is the hash of that "nonce" with the letter A and for the encryption key it's the letter C. + // if the hash doesn't produce enough a key or an IV that's long enough concat successive hashes of the + // original hash and the current hash. we'll be emulating that. for more info see the following URL: + // + // http://tools.ietf.org/html/rfc4253#section-7.2 + // + // see the is_string($crypto) part for an example of how to expand the keys + $key = pack('H*', sha1($seed . 'A')); + $iv = pack('H*', sha1($seed . 'C')); + + // ciphers are used as per the nist.gov link below. also, see this link: + // + // http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator#Designs_based_on_cryptographic_primitives + switch (true) { + case phpseclib_resolve_include_path('Crypt/AES.php'): + if (!class_exists('Crypt_AES')) { + include_once 'AES.php'; + } + $crypto = new Crypt_AES(CRYPT_AES_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/Twofish.php'): + if (!class_exists('Crypt_Twofish')) { + include_once 'Twofish.php'; + } + $crypto = new Crypt_Twofish(CRYPT_TWOFISH_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/Blowfish.php'): + if (!class_exists('Crypt_Blowfish')) { + include_once 'Blowfish.php'; + } + $crypto = new Crypt_Blowfish(CRYPT_BLOWFISH_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/TripleDES.php'): + if (!class_exists('Crypt_TripleDES')) { + include_once 'TripleDES.php'; + } + $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/DES.php'): + if (!class_exists('Crypt_DES')) { + include_once 'DES.php'; + } + $crypto = new Crypt_DES(CRYPT_DES_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/RC4.php'): + if (!class_exists('Crypt_RC4')) { + include_once 'RC4.php'; + } + $crypto = new Crypt_RC4(); + break; + default: + user_error('crypt_random_string requires at least one symmetric cipher be loaded'); + return false; + } + + $crypto->setKey($key); + $crypto->setIV($iv); + $crypto->enableContinuousBuffer(); + } + + //return $crypto->encrypt(str_repeat("\0", $length)); + + // the following is based off of ANSI X9.31: + // + // http://csrc.nist.gov/groups/STM/cavp/documents/rng/931rngext.pdf + // + // OpenSSL uses that same standard for it's random numbers: + // + // http://www.opensource.apple.com/source/OpenSSL/OpenSSL-38/openssl/fips-1.0/rand/fips_rand.c + // (do a search for "ANS X9.31 A.2.4") + $result = ''; + while (strlen($result) < $length) { + $i = $crypto->encrypt(microtime()); // strlen(microtime()) == 21 + $r = $crypto->encrypt($i ^ $v); // strlen($v) == 20 + $v = $crypto->encrypt($r ^ $i); // strlen($r) == 20 + $result.= $r; + } + return substr($result, 0, $length); + } +} + +if (!function_exists('phpseclib_safe_serialize')) { + /** + * Safely serialize variables + * + * If a class has a private __sleep() method it'll give a fatal error on PHP 5.2 and earlier. + * PHP 5.3 will emit a warning. + * + * @param mixed $arr + * @access public + */ + function phpseclib_safe_serialize(&$arr) + { + if (is_object($arr)) { + return ''; + } + if (!is_array($arr)) { + return serialize($arr); + } + // prevent circular array recursion + if (isset($arr['__phpseclib_marker'])) { + return ''; + } + $safearr = array(); + $arr['__phpseclib_marker'] = true; + foreach (array_keys($arr) as $key) { + // do not recurse on the '__phpseclib_marker' key itself, for smaller memory usage + if ($key !== '__phpseclib_marker') { + $safearr[$key] = phpseclib_safe_serialize($arr[$key]); + } + } + unset($arr['__phpseclib_marker']); + return serialize($safearr); + } +} + +if (!function_exists('phpseclib_resolve_include_path')) { + /** + * Resolve filename against the include path. + * + * Wrapper around stream_resolve_include_path() (which was introduced in + * PHP 5.3.2) with fallback implementation for earlier PHP versions. + * + * @param string $filename + * @return string|false + * @access public + */ + function phpseclib_resolve_include_path($filename) + { + if (function_exists('stream_resolve_include_path')) { + return stream_resolve_include_path($filename); + } + + // handle non-relative paths + if (file_exists($filename)) { + return realpath($filename); + } + + $paths = PATH_SEPARATOR == ':' ? + preg_split('#(? + * setKey('abcdefghijklmnop'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $rijndael->decrypt($rijndael->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Rijndael + * @author Jim Wigginton + * @copyright 2008 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_RIJNDAEL_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_RIJNDAEL_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_RIJNDAEL_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_RIJNDAEL_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_RIJNDAEL_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of Rijndael. + * + * @package Crypt_Rijndael + * @author Jim Wigginton + * @access public + */ +class Crypt_Rijndael extends Crypt_Base +{ + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'RIJNDAEL'; + + /** + * The mcrypt specific name of the cipher + * + * Mcrypt is useable for 128/192/256-bit $block_size/$key_length. For 160/224 not. + * Crypt_Rijndael determines automatically whether mcrypt is useable + * or not for the current $block_size/$key_length. + * In case of, $cipher_name_mcrypt will be set dynamically at run time accordingly. + * + * @see Crypt_Base::cipher_name_mcrypt + * @see Crypt_Base::engine + * @see self::isValidEngine() + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'rijndael-128'; + + /** + * The default salt used by setPassword() + * + * @see Crypt_Base::password_default_salt + * @see Crypt_Base::setPassword() + * @var string + * @access private + */ + var $password_default_salt = 'phpseclib'; + + /** + * The Key Schedule + * + * @see self::_setup() + * @var array + * @access private + */ + var $w; + + /** + * The Inverse Key Schedule + * + * @see self::_setup() + * @var array + * @access private + */ + var $dw; + + /** + * The Block Length divided by 32 + * + * @see self::setBlockLength() + * @var int + * @access private + * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4. Exists in conjunction with $block_size + * because the encryption / decryption / key schedule creation requires this number and not $block_size. We could + * derive this from $block_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $Nb = 4; + + /** + * The Key Length (in bytes) + * + * @see self::setKeyLength() + * @var int + * @access private + * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16. Exists in conjunction with $Nk + * because the encryption / decryption / key schedule creation requires this number and not $key_length. We could + * derive this from $key_length or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $key_length = 16; + + /** + * The Key Length divided by 32 + * + * @see self::setKeyLength() + * @var int + * @access private + * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4 + */ + var $Nk = 4; + + /** + * The Number of Rounds + * + * @var int + * @access private + * @internal The max value is 14, the min value is 10. + */ + var $Nr; + + /** + * Shift offsets + * + * @var array + * @access private + */ + var $c; + + /** + * Holds the last used key- and block_size information + * + * @var array + * @access private + */ + var $kl; + + /** + * Sets the key. + * + * Keys can be of any length. Rijndael, itself, requires the use of a key that's between 128-bits and 256-bits long and + * whose length is a multiple of 32. If the key is less than 256-bits and the key length isn't set, we round the length + * up to the closest valid key length, padding $key with null bytes. If the key is more than 256-bits, we trim the + * excess bits. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * Note: 160/224-bit keys must explicitly set by setKeyLength(), otherwise they will be round/pad up to 192/256 bits. + * + * @see Crypt_Base:setKey() + * @see self::setKeyLength() + * @access public + * @param string $key + */ + function setKey($key) + { + if (!$this->explicit_key_length) { + $length = strlen($key); + switch (true) { + case $length <= 16: + $this->key_size = 16; + break; + case $length <= 20: + $this->key_size = 20; + break; + case $length <= 24: + $this->key_size = 24; + break; + case $length <= 28: + $this->key_size = 28; + break; + default: + $this->key_size = 32; + } + } + parent::setKey($key); + } + + /** + * Sets the key length + * + * Valid key lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. + * + * Note: phpseclib extends Rijndael (and AES) for using 160- and 224-bit keys but they are officially not defined + * and the most (if not all) implementations are not able using 160/224-bit keys but round/pad them up to + * 192/256 bits as, for example, mcrypt will do. + * + * That said, if you want be compatible with other Rijndael and AES implementations, + * you should not setKeyLength(160) or setKeyLength(224). + * + * Additional: In case of 160- and 224-bit keys, phpseclib will/can, for that reason, not use + * the mcrypt php extension, even if available. + * This results then in slower encryption. + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + switch (true) { + case $length <= 128: + $this->key_length = 16; + break; + case $length <= 160: + $this->key_length = 20; + break; + case $length <= 192: + $this->key_length = 24; + break; + case $length <= 224: + $this->key_length = 28; + break; + default: + $this->key_length = 32; + } + + parent::setKeyLength($length); + } + + /** + * Sets the block length + * + * Valid block lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. + * + * @access public + * @param int $length + */ + function setBlockLength($length) + { + $length >>= 5; + if ($length > 8) { + $length = 8; + } elseif ($length < 4) { + $length = 4; + } + $this->Nb = $length; + $this->block_size = $length << 2; + $this->changed = true; + $this->_setEngine(); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + if ($this->block_size != 16) { + return false; + } + $this->cipher_name_openssl_ecb = 'aes-' . ($this->key_length << 3) . '-ecb'; + $this->cipher_name_openssl = 'aes-' . ($this->key_length << 3) . '-' . $this->_openssl_translate_mode(); + break; + case CRYPT_ENGINE_MCRYPT: + $this->cipher_name_mcrypt = 'rijndael-' . ($this->block_size << 3); + if ($this->key_length % 8) { // is it a 160/224-bit key? + // mcrypt is not usable for them, only for 128/192/256-bit keys + return false; + } + } + + return parent::isValidEngine($engine); + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + static $tables; + if (empty($tables)) { + $tables = &$this->_getTables(); + } + $t0 = $tables[0]; + $t1 = $tables[1]; + $t2 = $tables[2]; + $t3 = $tables[3]; + $sbox = $tables[4]; + + $state = array(); + $words = unpack('N*', $in); + + $c = $this->c; + $w = $this->w; + $Nb = $this->Nb; + $Nr = $this->Nr; + + // addRoundKey + $wc = $Nb - 1; + foreach ($words as $word) { + $state[] = $word ^ $w[++$wc]; + } + + // fips-197.pdf#page=19, "Figure 5. Pseudo Code for the Cipher", states that this loop has four components - + // subBytes, shiftRows, mixColumns, and addRoundKey. fips-197.pdf#page=30, "Implementation Suggestions Regarding + // Various Platforms" suggests that performs enhanced implementations are described in Rijndael-ammended.pdf. + // Rijndael-ammended.pdf#page=20, "Implementation aspects / 32-bit processor", discusses such an optimization. + // Unfortunately, the description given there is not quite correct. Per aes.spec.v316.pdf#page=19 [1], + // equation (7.4.7) is supposed to use addition instead of subtraction, so we'll do that here, as well. + + // [1] http://fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.v316.pdf + $temp = array(); + for ($round = 1; $round < $Nr; ++$round) { + $i = 0; // $c[0] == 0 + $j = $c[1]; + $k = $c[2]; + $l = $c[3]; + + while ($i < $Nb) { + $temp[$i] = $t0[$state[$i] >> 24 & 0x000000FF] ^ + $t1[$state[$j] >> 16 & 0x000000FF] ^ + $t2[$state[$k] >> 8 & 0x000000FF] ^ + $t3[$state[$l] & 0x000000FF] ^ + $w[++$wc]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + $state = $temp; + } + + // subWord + for ($i = 0; $i < $Nb; ++$i) { + $state[$i] = $sbox[$state[$i] & 0x000000FF] | + ($sbox[$state[$i] >> 8 & 0x000000FF] << 8) | + ($sbox[$state[$i] >> 16 & 0x000000FF] << 16) | + ($sbox[$state[$i] >> 24 & 0x000000FF] << 24); + } + + // shiftRows + addRoundKey + $i = 0; // $c[0] == 0 + $j = $c[1]; + $k = $c[2]; + $l = $c[3]; + while ($i < $Nb) { + $temp[$i] = ($state[$i] & 0xFF000000) ^ + ($state[$j] & 0x00FF0000) ^ + ($state[$k] & 0x0000FF00) ^ + ($state[$l] & 0x000000FF) ^ + $w[$i]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + + switch ($Nb) { + case 8: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); + case 7: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); + case 6: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); + case 5: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); + default: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); + } + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + static $invtables; + if (empty($invtables)) { + $invtables = &$this->_getInvTables(); + } + $dt0 = $invtables[0]; + $dt1 = $invtables[1]; + $dt2 = $invtables[2]; + $dt3 = $invtables[3]; + $isbox = $invtables[4]; + + $state = array(); + $words = unpack('N*', $in); + + $c = $this->c; + $dw = $this->dw; + $Nb = $this->Nb; + $Nr = $this->Nr; + + // addRoundKey + $wc = $Nb - 1; + foreach ($words as $word) { + $state[] = $word ^ $dw[++$wc]; + } + + $temp = array(); + for ($round = $Nr - 1; $round > 0; --$round) { + $i = 0; // $c[0] == 0 + $j = $Nb - $c[1]; + $k = $Nb - $c[2]; + $l = $Nb - $c[3]; + + while ($i < $Nb) { + $temp[$i] = $dt0[$state[$i] >> 24 & 0x000000FF] ^ + $dt1[$state[$j] >> 16 & 0x000000FF] ^ + $dt2[$state[$k] >> 8 & 0x000000FF] ^ + $dt3[$state[$l] & 0x000000FF] ^ + $dw[++$wc]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + $state = $temp; + } + + // invShiftRows + invSubWord + addRoundKey + $i = 0; // $c[0] == 0 + $j = $Nb - $c[1]; + $k = $Nb - $c[2]; + $l = $Nb - $c[3]; + + while ($i < $Nb) { + $word = ($state[$i] & 0xFF000000) | + ($state[$j] & 0x00FF0000) | + ($state[$k] & 0x0000FF00) | + ($state[$l] & 0x000000FF); + + $temp[$i] = $dw[$i] ^ ($isbox[$word & 0x000000FF] | + ($isbox[$word >> 8 & 0x000000FF] << 8) | + ($isbox[$word >> 16 & 0x000000FF] << 16) | + ($isbox[$word >> 24 & 0x000000FF] << 24)); + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + + switch ($Nb) { + case 8: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); + case 7: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); + case 6: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); + case 5: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); + default: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); + } + } + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + // Each number in $rcon is equal to the previous number multiplied by two in Rijndael's finite field. + // See http://en.wikipedia.org/wiki/Finite_field_arithmetic#Multiplicative_inverse + static $rcon = array(0, + 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000, + 0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000, + 0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000, + 0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000, + 0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000 + ); + + if (isset($this->kl['key']) && $this->key === $this->kl['key'] && $this->key_length === $this->kl['key_length'] && $this->block_size === $this->kl['block_size']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key, 'key_length' => $this->key_length, 'block_size' => $this->block_size); + + $this->Nk = $this->key_length >> 2; + // see Rijndael-ammended.pdf#page=44 + $this->Nr = max($this->Nk, $this->Nb) + 6; + + // shift offsets for Nb = 5, 7 are defined in Rijndael-ammended.pdf#page=44, + // "Table 8: Shift offsets in Shiftrow for the alternative block lengths" + // shift offsets for Nb = 4, 6, 8 are defined in Rijndael-ammended.pdf#page=14, + // "Table 2: Shift offsets for different block lengths" + switch ($this->Nb) { + case 4: + case 5: + case 6: + $this->c = array(0, 1, 2, 3); + break; + case 7: + $this->c = array(0, 1, 2, 4); + break; + case 8: + $this->c = array(0, 1, 3, 4); + } + + $w = array_values(unpack('N*words', $this->key)); + + $length = $this->Nb * ($this->Nr + 1); + for ($i = $this->Nk; $i < $length; $i++) { + $temp = $w[$i - 1]; + if ($i % $this->Nk == 0) { + // according to , "the size of an integer is platform-dependent". + // on a 32-bit machine, it's 32-bits, and on a 64-bit machine, it's 64-bits. on a 32-bit machine, + // 0xFFFFFFFF << 8 == 0xFFFFFF00, but on a 64-bit machine, it equals 0xFFFFFFFF00. as such, doing 'and' + // with 0xFFFFFFFF (or 0xFFFFFF00) on a 32-bit machine is unnecessary, but on a 64-bit machine, it is. + $temp = (($temp << 8) & 0xFFFFFF00) | (($temp >> 24) & 0x000000FF); // rotWord + $temp = $this->_subWord($temp) ^ $rcon[$i / $this->Nk]; + } elseif ($this->Nk > 6 && $i % $this->Nk == 4) { + $temp = $this->_subWord($temp); + } + $w[$i] = $w[$i - $this->Nk] ^ $temp; + } + + // convert the key schedule from a vector of $Nb * ($Nr + 1) length to a matrix with $Nr + 1 rows and $Nb columns + // and generate the inverse key schedule. more specifically, + // according to (section 5.3.3), + // "The key expansion for the Inverse Cipher is defined as follows: + // 1. Apply the Key Expansion. + // 2. Apply InvMixColumn to all Round Keys except the first and the last one." + // also, see fips-197.pdf#page=27, "5.3.5 Equivalent Inverse Cipher" + list($dt0, $dt1, $dt2, $dt3) = $this->_getInvTables(); + $temp = $this->w = $this->dw = array(); + for ($i = $row = $col = 0; $i < $length; $i++, $col++) { + if ($col == $this->Nb) { + if ($row == 0) { + $this->dw[0] = $this->w[0]; + } else { + // subWord + invMixColumn + invSubWord = invMixColumn + $j = 0; + while ($j < $this->Nb) { + $dw = $this->_subWord($this->w[$row][$j]); + $temp[$j] = $dt0[$dw >> 24 & 0x000000FF] ^ + $dt1[$dw >> 16 & 0x000000FF] ^ + $dt2[$dw >> 8 & 0x000000FF] ^ + $dt3[$dw & 0x000000FF]; + $j++; + } + $this->dw[$row] = $temp; + } + + $col = 0; + $row++; + } + $this->w[$row][$col] = $w[$i]; + } + + $this->dw[$row] = $this->w[$row]; + + // Converting to 1-dim key arrays (both ascending) + $this->dw = array_reverse($this->dw); + $w = array_pop($this->w); + $dw = array_pop($this->dw); + foreach ($this->w as $r => $wr) { + foreach ($wr as $c => $wc) { + $w[] = $wc; + $dw[] = $this->dw[$r][$c]; + } + } + $this->w = $w; + $this->dw = $dw; + } + + /** + * Performs S-Box substitutions + * + * @access private + * @param int $word + */ + function _subWord($word) + { + static $sbox; + if (empty($sbox)) { + list(, , , , $sbox) = $this->_getTables(); + } + + return $sbox[$word & 0x000000FF] | + ($sbox[$word >> 8 & 0x000000FF] << 8) | + ($sbox[$word >> 16 & 0x000000FF] << 16) | + ($sbox[$word >> 24 & 0x000000FF] << 24); + } + + /** + * Provides the mixColumns and sboxes tables + * + * @see Crypt_Rijndael:_encryptBlock() + * @see Crypt_Rijndael:_setupInlineCrypt() + * @see Crypt_Rijndael:_subWord() + * @access private + * @return array &$tables + */ + function &_getTables() + { + static $tables; + if (empty($tables)) { + // according to (section 5.2.1), + // precomputed tables can be used in the mixColumns phase. in that example, they're assigned t0...t3, so + // those are the names we'll use. + $t3 = array_map('intval', array( + // with array_map('intval', ...) we ensure we have only int's and not + // some slower floats converted by php automatically on high values + 0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, 0x6F6FB1DE, 0xC5C55491, + 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, 0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, + 0xCACA458F, 0x82829D1F, 0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, + 0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, 0x727296E4, 0xC0C05B9B, + 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, 0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, + 0x34345C68, 0xA5A5F451, 0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, + 0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, 0x05050F0A, 0x9A9AB52F, + 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, 0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, + 0x09091B12, 0x83839E1D, 0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, + 0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, 0x2F2F715E, 0x84849713, + 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, 0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, + 0x6A6ABED4, 0xCBCB468D, 0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, + 0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, 0x33335566, 0x85859411, + 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, 0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, + 0x5151F3A2, 0xA3A3FE5D, 0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, + 0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, 0xF3F30EFD, 0xD2D26DBF, + 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, 0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, + 0xC4C45793, 0xA7A7F255, 0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, + 0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, 0x9090AB3B, 0x8888830B, + 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, 0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, + 0xE0E03BDB, 0x32325664, 0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, + 0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, 0xE4E437D3, 0x79798BF2, + 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, 0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, + 0x6C6CB4D8, 0x5656FAAC, 0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, + 0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, 0xB4B4C773, 0xC6C65197, + 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, 0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, + 0x707090E0, 0x3E3E427C, 0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, + 0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, 0x1D1D273A, 0x9E9EB927, + 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, 0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, + 0x9B9BB62D, 0x1E1E223C, 0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, + 0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, 0x4242C684, 0x6868B8D0, + 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, 0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C + )); + + foreach ($t3 as $t3i) { + $t0[] = (($t3i << 24) & 0xFF000000) | (($t3i >> 8) & 0x00FFFFFF); + $t1[] = (($t3i << 16) & 0xFFFF0000) | (($t3i >> 16) & 0x0000FFFF); + $t2[] = (($t3i << 8) & 0xFFFFFF00) | (($t3i >> 24) & 0x000000FF); + } + + $tables = array( + // The Precomputed mixColumns tables t0 - t3 + $t0, + $t1, + $t2, + $t3, + // The SubByte S-Box + array( + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 + ) + ); + } + return $tables; + } + + /** + * Provides the inverse mixColumns and inverse sboxes tables + * + * @see Crypt_Rijndael:_decryptBlock() + * @see Crypt_Rijndael:_setupInlineCrypt() + * @see Crypt_Rijndael:_setupKey() + * @access private + * @return array &$tables + */ + function &_getInvTables() + { + static $tables; + if (empty($tables)) { + $dt3 = array_map('intval', array( + 0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, 0xFA58ABAC, 0xE303934B, + 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, 0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, + 0xB15A49DE, 0xBA1B6725, 0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, + 0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, 0xE0692949, 0xC9C8448E, + 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, 0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, + 0xDF4A1863, 0x1A3182E5, 0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, + 0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, 0x1F8F57E3, 0x55AB2A66, + 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, 0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, + 0xCF1C2B8A, 0x79B492A7, 0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, + 0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, 0x719F065E, 0x6E1051BD, + 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, 0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, + 0x98FB2419, 0xBDE997D6, 0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, + 0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, 0x1170AC1E, 0x5A724E6C, + 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, 0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, + 0x0A67B10C, 0x57E70F93, 0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, + 0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, 0xB6A8B92D, 0x1EA9C814, + 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, 0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, + 0x4329768B, 0x23C6DCCB, 0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, + 0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, 0x8652EC0D, 0xC1E3D077, + 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, 0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, + 0x494EC787, 0x38D1C1D9, 0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, + 0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, 0x39F75E2E, 0xC3AFF582, + 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, 0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, + 0x267809CD, 0x5918F46E, 0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, + 0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, 0xA59430C6, 0xA266C035, + 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, 0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, + 0x4DD68D76, 0xEFB04D43, 0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, + 0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, 0x105633E9, 0xD647136D, + 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, 0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, + 0xD2DF599C, 0xF2733F55, 0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, + 0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, 0x3C498B28, 0x0D9541FF, + 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, 0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 + )); + + foreach ($dt3 as $dt3i) { + $dt0[] = (($dt3i << 24) & 0xFF000000) | (($dt3i >> 8) & 0x00FFFFFF); + $dt1[] = (($dt3i << 16) & 0xFFFF0000) | (($dt3i >> 16) & 0x0000FFFF); + $dt2[] = (($dt3i << 8) & 0xFFFFFF00) | (($dt3i >> 24) & 0x000000FF); + }; + + $tables = array( + // The Precomputed inverse mixColumns tables dt0 - dt3 + $dt0, + $dt1, + $dt2, + $dt3, + // The inverse SubByte S-Box + array( + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D + ) + ); + } + return $tables; + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + // Note: _setupInlineCrypt() will be called only if $this->changed === true + // So here we are'nt under the same heavy timing-stress as we are in _de/encryptBlock() or de/encrypt(). + // However...the here generated function- $code, stored as php callback in $this->inline_crypt, must work as fast as even possible. + + $lambda_functions =& Crypt_Rijndael::_getLambdaFunctions(); + + // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. + // (Currently, for Crypt_Rijndael/AES, one generated $lambda_function cost on php5.5@32bit ~80kb unfreeable mem and ~130kb on php5.5@64bit) + // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one. + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a uniqe hash for our generated code + $code_hash = "Crypt_Rijndael, {$this->mode}, {$this->Nr}, {$this->Nb}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + if (!isset($lambda_functions[$code_hash])) { + switch (true) { + case $gen_hi_opt_code: + // The hi-optimized $lambda_functions will use the key-words hardcoded for better performance. + $w = $this->w; + $dw = $this->dw; + $init_encrypt = ''; + $init_decrypt = ''; + break; + default: + for ($i = 0, $cw = count($this->w); $i < $cw; ++$i) { + $w[] = '$w[' . $i . ']'; + $dw[] = '$dw[' . $i . ']'; + } + $init_encrypt = '$w = $self->w;'; + $init_decrypt = '$dw = $self->dw;'; + } + + $Nr = $this->Nr; + $Nb = $this->Nb; + $c = $this->c; + + // Generating encrypt code: + $init_encrypt.= ' + static $tables; + if (empty($tables)) { + $tables = &$self->_getTables(); + } + $t0 = $tables[0]; + $t1 = $tables[1]; + $t2 = $tables[2]; + $t3 = $tables[3]; + $sbox = $tables[4]; + '; + + $s = 'e'; + $e = 's'; + $wc = $Nb - 1; + + // Preround: addRoundKey + $encrypt_block = '$in = unpack("N*", $in);'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block .= '$s'.$i.' = $in['.($i + 1).'] ^ '.$w[++$wc].";\n"; + } + + // Mainrounds: shiftRows + subWord + mixColumns + addRoundKey + for ($round = 1; $round < $Nr; ++$round) { + list($s, $e) = array($e, $s); + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block.= + '$'.$e.$i.' = + $t0[($'.$s.$i .' >> 24) & 0xff] ^ + $t1[($'.$s.(($i + $c[1]) % $Nb).' >> 16) & 0xff] ^ + $t2[($'.$s.(($i + $c[2]) % $Nb).' >> 8) & 0xff] ^ + $t3[ $'.$s.(($i + $c[3]) % $Nb).' & 0xff] ^ + '.$w[++$wc].";\n"; + } + } + + // Finalround: subWord + shiftRows + addRoundKey + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block.= + '$'.$e.$i.' = + $sbox[ $'.$e.$i.' & 0xff] | + ($sbox[($'.$e.$i.' >> 8) & 0xff] << 8) | + ($sbox[($'.$e.$i.' >> 16) & 0xff] << 16) | + ($sbox[($'.$e.$i.' >> 24) & 0xff] << 24);'."\n"; + } + $encrypt_block .= '$in = pack("N*"'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block.= ', + ($'.$e.$i .' & '.((int)0xFF000000).') ^ + ($'.$e.(($i + $c[1]) % $Nb).' & 0x00FF0000 ) ^ + ($'.$e.(($i + $c[2]) % $Nb).' & 0x0000FF00 ) ^ + ($'.$e.(($i + $c[3]) % $Nb).' & 0x000000FF ) ^ + '.$w[$i]."\n"; + } + $encrypt_block .= ');'; + + // Generating decrypt code: + $init_decrypt.= ' + static $invtables; + if (empty($invtables)) { + $invtables = &$self->_getInvTables(); + } + $dt0 = $invtables[0]; + $dt1 = $invtables[1]; + $dt2 = $invtables[2]; + $dt3 = $invtables[3]; + $isbox = $invtables[4]; + '; + + $s = 'e'; + $e = 's'; + $wc = $Nb - 1; + + // Preround: addRoundKey + $decrypt_block = '$in = unpack("N*", $in);'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block .= '$s'.$i.' = $in['.($i + 1).'] ^ '.$dw[++$wc].';'."\n"; + } + + // Mainrounds: shiftRows + subWord + mixColumns + addRoundKey + for ($round = 1; $round < $Nr; ++$round) { + list($s, $e) = array($e, $s); + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block.= + '$'.$e.$i.' = + $dt0[($'.$s.$i .' >> 24) & 0xff] ^ + $dt1[($'.$s.(($Nb + $i - $c[1]) % $Nb).' >> 16) & 0xff] ^ + $dt2[($'.$s.(($Nb + $i - $c[2]) % $Nb).' >> 8) & 0xff] ^ + $dt3[ $'.$s.(($Nb + $i - $c[3]) % $Nb).' & 0xff] ^ + '.$dw[++$wc].";\n"; + } + } + + // Finalround: subWord + shiftRows + addRoundKey + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block.= + '$'.$e.$i.' = + $isbox[ $'.$e.$i.' & 0xff] | + ($isbox[($'.$e.$i.' >> 8) & 0xff] << 8) | + ($isbox[($'.$e.$i.' >> 16) & 0xff] << 16) | + ($isbox[($'.$e.$i.' >> 24) & 0xff] << 24);'."\n"; + } + $decrypt_block .= '$in = pack("N*"'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block.= ', + ($'.$e.$i. ' & '.((int)0xFF000000).') ^ + ($'.$e.(($Nb + $i - $c[1]) % $Nb).' & 0x00FF0000 ) ^ + ($'.$e.(($Nb + $i - $c[2]) % $Nb).' & 0x0000FF00 ) ^ + ($'.$e.(($Nb + $i - $c[3]) % $Nb).' & 0x000000FF ) ^ + '.$dw[$i]."\n"; + } + $decrypt_block .= ');'; + + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => '', + 'init_encrypt' => $init_encrypt, + 'init_decrypt' => $init_decrypt, + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/TripleDES.php b/app/Http/Controllers/dgaAdmin/Crypt/TripleDES.php new file mode 100644 index 0000000..4c0b677 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/TripleDES.php @@ -0,0 +1,517 @@ + + * setKey('abcdefghijklmnopqrstuvwx'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $des->decrypt($des->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_TripleDES + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_DES + */ +if (!class_exists('Crypt_DES')) { + include_once 'DES.php'; +} + +/**#@+ + * @access public + * @see self::Crypt_TripleDES() + */ +/** + * Encrypt / decrypt using inner chaining + * + * Inner chaining is used by SSH-1 and is generally considered to be less secure then outer chaining (CRYPT_DES_MODE_CBC3). + */ +define('CRYPT_MODE_3CBC', -2); +/** + * BC version of the above. + */ +define('CRYPT_DES_MODE_3CBC', -2); +/** + * Encrypt / decrypt using outer chaining + * + * Outer chaining is used by SSH-2 and when the mode is set to CRYPT_DES_MODE_CBC. + */ +define('CRYPT_MODE_CBC3', CRYPT_MODE_CBC); +/** + * BC version of the above. + */ +define('CRYPT_DES_MODE_CBC3', CRYPT_MODE_CBC3); +/**#@-*/ + +/** + * Pure-PHP implementation of Triple DES. + * + * @package Crypt_TripleDES + * @author Jim Wigginton + * @access public + */ +class Crypt_TripleDES extends Crypt_DES +{ + /** + * Key Length (in bytes) + * + * @see Crypt_TripleDES::setKeyLength() + * @var int + * @access private + */ + var $key_length = 24; + + /** + * The default salt used by setPassword() + * + * @see Crypt_Base::password_default_salt + * @see Crypt_Base::setPassword() + * @var string + * @access private + */ + var $password_default_salt = 'phpseclib'; + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_DES::const_namespace + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'DES'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_DES::cipher_name_mcrypt + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'tripledes'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 750; + + /** + * max possible size of $key + * + * @see self::setKey() + * @see Crypt_DES::setKey() + * @var string + * @access private + */ + var $key_length_max = 24; + + /** + * Internal flag whether using CRYPT_DES_MODE_3CBC or not + * + * @var bool + * @access private + */ + var $mode_3cbc; + + /** + * The Crypt_DES objects + * + * Used only if $mode_3cbc === true + * + * @var array + * @access private + */ + var $des; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * $mode could be: + * + * - CRYPT_DES_MODE_ECB + * + * - CRYPT_DES_MODE_CBC + * + * - CRYPT_DES_MODE_CTR + * + * - CRYPT_DES_MODE_CFB + * + * - CRYPT_DES_MODE_OFB + * + * - CRYPT_DES_MODE_3CBC + * + * If not explicitly set, CRYPT_DES_MODE_CBC will be used. + * + * @see Crypt_DES::Crypt_DES() + * @see Crypt_Base::Crypt_Base() + * @param int $mode + * @access public + */ + function __construct($mode = CRYPT_MODE_CBC) + { + switch ($mode) { + // In case of CRYPT_DES_MODE_3CBC, we init as CRYPT_DES_MODE_CBC + // and additional flag us internally as 3CBC + case CRYPT_DES_MODE_3CBC: + parent::Crypt_Base(CRYPT_MODE_CBC); + $this->mode_3cbc = true; + + // This three $des'es will do the 3CBC work (if $key > 64bits) + $this->des = array( + new Crypt_DES(CRYPT_MODE_CBC), + new Crypt_DES(CRYPT_MODE_CBC), + new Crypt_DES(CRYPT_MODE_CBC), + ); + + // we're going to be doing the padding, ourselves, so disable it in the Crypt_DES objects + $this->des[0]->disablePadding(); + $this->des[1]->disablePadding(); + $this->des[2]->disablePadding(); + break; + // If not 3CBC, we init as usual + default: + parent::__construct($mode); + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param int $mode + * @access public + */ + function Crypt_TripleDES($mode = CRYPT_MODE_CBC) + { + $this->__construct($mode); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($engine == CRYPT_ENGINE_OPENSSL) { + $this->cipher_name_openssl_ecb = 'des-ede3'; + $mode = $this->_openssl_translate_mode(); + $this->cipher_name_openssl = $mode == 'ecb' ? 'des-ede3' : 'des-ede3-' . $mode; + } + + return parent::isValidEngine($engine); + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_DES_MODE_ECB is being used. If not explicitly set, it'll be assumed + * to be all zero's. + * + * @see Crypt_Base::setIV() + * @access public + * @param string $iv + */ + function setIV($iv) + { + parent::setIV($iv); + if ($this->mode_3cbc) { + $this->des[0]->setIV($iv); + $this->des[1]->setIV($iv); + $this->des[2]->setIV($iv); + } + } + + /** + * Sets the key length. + * + * Valid key lengths are 64, 128 and 192 + * + * @see Crypt_Base:setKeyLength() + * @access public + * @param int $length + */ + function setKeyLength($length) + { + $length >>= 3; + switch (true) { + case $length <= 8: + $this->key_length = 8; + break; + case $length <= 16: + $this->key_length = 16; + break; + default: + $this->key_length = 24; + } + + parent::setKeyLength($length); + } + + /** + * Sets the key. + * + * Keys can be of any length. Triple DES, itself, can use 128-bit (eg. strlen($key) == 16) or + * 192-bit (eg. strlen($key) == 24) keys. This function pads and truncates $key as appropriate. + * + * DES also requires that every eighth bit be a parity bit, however, we'll ignore that. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * @access public + * @see Crypt_DES::setKey() + * @see Crypt_Base::setKey() + * @param string $key + */ + function setKey($key) + { + $length = $this->explicit_key_length ? $this->key_length : strlen($key); + if ($length > 8) { + $key = str_pad(substr($key, 0, 24), 24, chr(0)); + // if $key is between 64 and 128-bits, use the first 64-bits as the last, per this: + // http://php.net/function.mcrypt-encrypt#47973 + $key = $length <= 16 ? substr_replace($key, substr($key, 0, 8), 16) : substr($key, 0, 24); + } else { + $key = str_pad($key, 8, chr(0)); + } + parent::setKey($key); + + // And in case of CRYPT_DES_MODE_3CBC: + // if key <= 64bits we not need the 3 $des to work, + // because we will then act as regular DES-CBC with just a <= 64bit key. + // So only if the key > 64bits (> 8 bytes) we will call setKey() for the 3 $des. + if ($this->mode_3cbc && $length > 8) { + $this->des[0]->setKey(substr($key, 0, 8)); + $this->des[1]->setKey(substr($key, 8, 8)); + $this->des[2]->setKey(substr($key, 16, 8)); + } + } + + /** + * Encrypts a message. + * + * @see Crypt_Base::encrypt() + * @access public + * @param string $plaintext + * @return string $cipertext + */ + function encrypt($plaintext) + { + // parent::en/decrypt() is able to do all the work for all modes and keylengths, + // except for: CRYPT_MODE_3CBC (inner chaining CBC) with a key > 64bits + + // if the key is smaller then 8, do what we'd normally do + if ($this->mode_3cbc && strlen($this->key) > 8) { + return $this->des[2]->encrypt( + $this->des[1]->decrypt( + $this->des[0]->encrypt( + $this->_pad($plaintext) + ) + ) + ); + } + + return parent::encrypt($plaintext); + } + + /** + * Decrypts a message. + * + * @see Crypt_Base::decrypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + */ + function decrypt($ciphertext) + { + if ($this->mode_3cbc && strlen($this->key) > 8) { + return $this->_unpad( + $this->des[0]->decrypt( + $this->des[1]->encrypt( + $this->des[2]->decrypt( + str_pad($ciphertext, (strlen($ciphertext) + 7) & 0xFFFFFFF8, "\0") + ) + ) + ) + ); + } + + return parent::decrypt($ciphertext); + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 16-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->encrypt(substr($plaintext, 8, 8)); + * + * + * echo $des->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see Crypt_Base::enableContinuousBuffer() + * @see self::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + parent::enableContinuousBuffer(); + if ($this->mode_3cbc) { + $this->des[0]->enableContinuousBuffer(); + $this->des[1]->enableContinuousBuffer(); + $this->des[2]->enableContinuousBuffer(); + } + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_Base::disableContinuousBuffer() + * @see self::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + parent::disableContinuousBuffer(); + if ($this->mode_3cbc) { + $this->des[0]->disableContinuousBuffer(); + $this->des[1]->disableContinuousBuffer(); + $this->des[2]->disableContinuousBuffer(); + } + } + + /** + * Creates the key schedule + * + * @see Crypt_DES::_setupKey() + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + switch (true) { + // if $key <= 64bits we configure our internal pure-php cipher engine + // to act as regular [1]DES, not as 3DES. mcrypt.so::tripledes does the same. + case strlen($this->key) <= 8: + $this->des_rounds = 1; + break; + + // otherwise, if $key > 64bits, we configure our engine to work as 3DES. + default: + $this->des_rounds = 3; + + // (only) if 3CBC is used we have, of course, to setup the $des[0-2] keys also separately. + if ($this->mode_3cbc) { + $this->des[0]->_setupKey(); + $this->des[1]->_setupKey(); + $this->des[2]->_setupKey(); + + // because $des[0-2] will, now, do all the work we can return here + // not need unnecessary stress parent::_setupKey() with our, now unused, $key. + return; + } + } + // setup our key + parent::_setupKey(); + } + + /** + * Sets the internal crypt engine + * + * @see Crypt_Base::Crypt_Base() + * @see Crypt_Base::setPreferredEngine() + * @param int $engine + * @access public + * @return int + */ + function setPreferredEngine($engine) + { + if ($this->mode_3cbc) { + $this->des[0]->setPreferredEngine($engine); + $this->des[1]->setPreferredEngine($engine); + $this->des[2]->setPreferredEngine($engine); + } + + return parent::setPreferredEngine($engine); + } +} diff --git a/app/Http/Controllers/dgaAdmin/Crypt/Twofish.php b/app/Http/Controllers/dgaAdmin/Crypt/Twofish.php new file mode 100644 index 0000000..f33cbdf --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/Crypt/Twofish.php @@ -0,0 +1,889 @@ + + * setKey('12345678901234567890123456789012'); + * + * $plaintext = str_repeat('a', 1024); + * + * echo $twofish->decrypt($twofish->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Twofish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_TWOFISH_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_TWOFISH_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_TWOFISH_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_TWOFISH_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_TWOFISH_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of Twofish. + * + * @package Crypt_Twofish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @access public + */ +class Crypt_Twofish extends Crypt_Base +{ + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'TWOFISH'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'twofish'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 800; + + /** + * Q-Table + * + * @var array + * @access private + */ + var $q0 = array( + 0xA9, 0x67, 0xB3, 0xE8, 0x04, 0xFD, 0xA3, 0x76, + 0x9A, 0x92, 0x80, 0x78, 0xE4, 0xDD, 0xD1, 0x38, + 0x0D, 0xC6, 0x35, 0x98, 0x18, 0xF7, 0xEC, 0x6C, + 0x43, 0x75, 0x37, 0x26, 0xFA, 0x13, 0x94, 0x48, + 0xF2, 0xD0, 0x8B, 0x30, 0x84, 0x54, 0xDF, 0x23, + 0x19, 0x5B, 0x3D, 0x59, 0xF3, 0xAE, 0xA2, 0x82, + 0x63, 0x01, 0x83, 0x2E, 0xD9, 0x51, 0x9B, 0x7C, + 0xA6, 0xEB, 0xA5, 0xBE, 0x16, 0x0C, 0xE3, 0x61, + 0xC0, 0x8C, 0x3A, 0xF5, 0x73, 0x2C, 0x25, 0x0B, + 0xBB, 0x4E, 0x89, 0x6B, 0x53, 0x6A, 0xB4, 0xF1, + 0xE1, 0xE6, 0xBD, 0x45, 0xE2, 0xF4, 0xB6, 0x66, + 0xCC, 0x95, 0x03, 0x56, 0xD4, 0x1C, 0x1E, 0xD7, + 0xFB, 0xC3, 0x8E, 0xB5, 0xE9, 0xCF, 0xBF, 0xBA, + 0xEA, 0x77, 0x39, 0xAF, 0x33, 0xC9, 0x62, 0x71, + 0x81, 0x79, 0x09, 0xAD, 0x24, 0xCD, 0xF9, 0xD8, + 0xE5, 0xC5, 0xB9, 0x4D, 0x44, 0x08, 0x86, 0xE7, + 0xA1, 0x1D, 0xAA, 0xED, 0x06, 0x70, 0xB2, 0xD2, + 0x41, 0x7B, 0xA0, 0x11, 0x31, 0xC2, 0x27, 0x90, + 0x20, 0xF6, 0x60, 0xFF, 0x96, 0x5C, 0xB1, 0xAB, + 0x9E, 0x9C, 0x52, 0x1B, 0x5F, 0x93, 0x0A, 0xEF, + 0x91, 0x85, 0x49, 0xEE, 0x2D, 0x4F, 0x8F, 0x3B, + 0x47, 0x87, 0x6D, 0x46, 0xD6, 0x3E, 0x69, 0x64, + 0x2A, 0xCE, 0xCB, 0x2F, 0xFC, 0x97, 0x05, 0x7A, + 0xAC, 0x7F, 0xD5, 0x1A, 0x4B, 0x0E, 0xA7, 0x5A, + 0x28, 0x14, 0x3F, 0x29, 0x88, 0x3C, 0x4C, 0x02, + 0xB8, 0xDA, 0xB0, 0x17, 0x55, 0x1F, 0x8A, 0x7D, + 0x57, 0xC7, 0x8D, 0x74, 0xB7, 0xC4, 0x9F, 0x72, + 0x7E, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, + 0x6E, 0x50, 0xDE, 0x68, 0x65, 0xBC, 0xDB, 0xF8, + 0xC8, 0xA8, 0x2B, 0x40, 0xDC, 0xFE, 0x32, 0xA4, + 0xCA, 0x10, 0x21, 0xF0, 0xD3, 0x5D, 0x0F, 0x00, + 0x6F, 0x9D, 0x36, 0x42, 0x4A, 0x5E, 0xC1, 0xE0 + ); + + /** + * Q-Table + * + * @var array + * @access private + */ + var $q1 = array( + 0x75, 0xF3, 0xC6, 0xF4, 0xDB, 0x7B, 0xFB, 0xC8, + 0x4A, 0xD3, 0xE6, 0x6B, 0x45, 0x7D, 0xE8, 0x4B, + 0xD6, 0x32, 0xD8, 0xFD, 0x37, 0x71, 0xF1, 0xE1, + 0x30, 0x0F, 0xF8, 0x1B, 0x87, 0xFA, 0x06, 0x3F, + 0x5E, 0xBA, 0xAE, 0x5B, 0x8A, 0x00, 0xBC, 0x9D, + 0x6D, 0xC1, 0xB1, 0x0E, 0x80, 0x5D, 0xD2, 0xD5, + 0xA0, 0x84, 0x07, 0x14, 0xB5, 0x90, 0x2C, 0xA3, + 0xB2, 0x73, 0x4C, 0x54, 0x92, 0x74, 0x36, 0x51, + 0x38, 0xB0, 0xBD, 0x5A, 0xFC, 0x60, 0x62, 0x96, + 0x6C, 0x42, 0xF7, 0x10, 0x7C, 0x28, 0x27, 0x8C, + 0x13, 0x95, 0x9C, 0xC7, 0x24, 0x46, 0x3B, 0x70, + 0xCA, 0xE3, 0x85, 0xCB, 0x11, 0xD0, 0x93, 0xB8, + 0xA6, 0x83, 0x20, 0xFF, 0x9F, 0x77, 0xC3, 0xCC, + 0x03, 0x6F, 0x08, 0xBF, 0x40, 0xE7, 0x2B, 0xE2, + 0x79, 0x0C, 0xAA, 0x82, 0x41, 0x3A, 0xEA, 0xB9, + 0xE4, 0x9A, 0xA4, 0x97, 0x7E, 0xDA, 0x7A, 0x17, + 0x66, 0x94, 0xA1, 0x1D, 0x3D, 0xF0, 0xDE, 0xB3, + 0x0B, 0x72, 0xA7, 0x1C, 0xEF, 0xD1, 0x53, 0x3E, + 0x8F, 0x33, 0x26, 0x5F, 0xEC, 0x76, 0x2A, 0x49, + 0x81, 0x88, 0xEE, 0x21, 0xC4, 0x1A, 0xEB, 0xD9, + 0xC5, 0x39, 0x99, 0xCD, 0xAD, 0x31, 0x8B, 0x01, + 0x18, 0x23, 0xDD, 0x1F, 0x4E, 0x2D, 0xF9, 0x48, + 0x4F, 0xF2, 0x65, 0x8E, 0x78, 0x5C, 0x58, 0x19, + 0x8D, 0xE5, 0x98, 0x57, 0x67, 0x7F, 0x05, 0x64, + 0xAF, 0x63, 0xB6, 0xFE, 0xF5, 0xB7, 0x3C, 0xA5, + 0xCE, 0xE9, 0x68, 0x44, 0xE0, 0x4D, 0x43, 0x69, + 0x29, 0x2E, 0xAC, 0x15, 0x59, 0xA8, 0x0A, 0x9E, + 0x6E, 0x47, 0xDF, 0x34, 0x35, 0x6A, 0xCF, 0xDC, + 0x22, 0xC9, 0xC0, 0x9B, 0x89, 0xD4, 0xED, 0xAB, + 0x12, 0xA2, 0x0D, 0x52, 0xBB, 0x02, 0x2F, 0xA9, + 0xD7, 0x61, 0x1E, 0xB4, 0x50, 0x04, 0xF6, 0xC2, + 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xBE, 0x91 + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m0 = array( + 0xBCBC3275, 0xECEC21F3, 0x202043C6, 0xB3B3C9F4, 0xDADA03DB, 0x02028B7B, 0xE2E22BFB, 0x9E9EFAC8, + 0xC9C9EC4A, 0xD4D409D3, 0x18186BE6, 0x1E1E9F6B, 0x98980E45, 0xB2B2387D, 0xA6A6D2E8, 0x2626B74B, + 0x3C3C57D6, 0x93938A32, 0x8282EED8, 0x525298FD, 0x7B7BD437, 0xBBBB3771, 0x5B5B97F1, 0x474783E1, + 0x24243C30, 0x5151E20F, 0xBABAC6F8, 0x4A4AF31B, 0xBFBF4887, 0x0D0D70FA, 0xB0B0B306, 0x7575DE3F, + 0xD2D2FD5E, 0x7D7D20BA, 0x666631AE, 0x3A3AA35B, 0x59591C8A, 0x00000000, 0xCDCD93BC, 0x1A1AE09D, + 0xAEAE2C6D, 0x7F7FABC1, 0x2B2BC7B1, 0xBEBEB90E, 0xE0E0A080, 0x8A8A105D, 0x3B3B52D2, 0x6464BAD5, + 0xD8D888A0, 0xE7E7A584, 0x5F5FE807, 0x1B1B1114, 0x2C2CC2B5, 0xFCFCB490, 0x3131272C, 0x808065A3, + 0x73732AB2, 0x0C0C8173, 0x79795F4C, 0x6B6B4154, 0x4B4B0292, 0x53536974, 0x94948F36, 0x83831F51, + 0x2A2A3638, 0xC4C49CB0, 0x2222C8BD, 0xD5D5F85A, 0xBDBDC3FC, 0x48487860, 0xFFFFCE62, 0x4C4C0796, + 0x4141776C, 0xC7C7E642, 0xEBEB24F7, 0x1C1C1410, 0x5D5D637C, 0x36362228, 0x6767C027, 0xE9E9AF8C, + 0x4444F913, 0x1414EA95, 0xF5F5BB9C, 0xCFCF18C7, 0x3F3F2D24, 0xC0C0E346, 0x7272DB3B, 0x54546C70, + 0x29294CCA, 0xF0F035E3, 0x0808FE85, 0xC6C617CB, 0xF3F34F11, 0x8C8CE4D0, 0xA4A45993, 0xCACA96B8, + 0x68683BA6, 0xB8B84D83, 0x38382820, 0xE5E52EFF, 0xADAD569F, 0x0B0B8477, 0xC8C81DC3, 0x9999FFCC, + 0x5858ED03, 0x19199A6F, 0x0E0E0A08, 0x95957EBF, 0x70705040, 0xF7F730E7, 0x6E6ECF2B, 0x1F1F6EE2, + 0xB5B53D79, 0x09090F0C, 0x616134AA, 0x57571682, 0x9F9F0B41, 0x9D9D803A, 0x111164EA, 0x2525CDB9, + 0xAFAFDDE4, 0x4545089A, 0xDFDF8DA4, 0xA3A35C97, 0xEAEAD57E, 0x353558DA, 0xEDEDD07A, 0x4343FC17, + 0xF8F8CB66, 0xFBFBB194, 0x3737D3A1, 0xFAFA401D, 0xC2C2683D, 0xB4B4CCF0, 0x32325DDE, 0x9C9C71B3, + 0x5656E70B, 0xE3E3DA72, 0x878760A7, 0x15151B1C, 0xF9F93AEF, 0x6363BFD1, 0x3434A953, 0x9A9A853E, + 0xB1B1428F, 0x7C7CD133, 0x88889B26, 0x3D3DA65F, 0xA1A1D7EC, 0xE4E4DF76, 0x8181942A, 0x91910149, + 0x0F0FFB81, 0xEEEEAA88, 0x161661EE, 0xD7D77321, 0x9797F5C4, 0xA5A5A81A, 0xFEFE3FEB, 0x6D6DB5D9, + 0x7878AEC5, 0xC5C56D39, 0x1D1DE599, 0x7676A4CD, 0x3E3EDCAD, 0xCBCB6731, 0xB6B6478B, 0xEFEF5B01, + 0x12121E18, 0x6060C523, 0x6A6AB0DD, 0x4D4DF61F, 0xCECEE94E, 0xDEDE7C2D, 0x55559DF9, 0x7E7E5A48, + 0x2121B24F, 0x03037AF2, 0xA0A02665, 0x5E5E198E, 0x5A5A6678, 0x65654B5C, 0x62624E58, 0xFDFD4519, + 0x0606F48D, 0x404086E5, 0xF2F2BE98, 0x3333AC57, 0x17179067, 0x05058E7F, 0xE8E85E05, 0x4F4F7D64, + 0x89896AAF, 0x10109563, 0x74742FB6, 0x0A0A75FE, 0x5C5C92F5, 0x9B9B74B7, 0x2D2D333C, 0x3030D6A5, + 0x2E2E49CE, 0x494989E9, 0x46467268, 0x77775544, 0xA8A8D8E0, 0x9696044D, 0x2828BD43, 0xA9A92969, + 0xD9D97929, 0x8686912E, 0xD1D187AC, 0xF4F44A15, 0x8D8D1559, 0xD6D682A8, 0xB9B9BC0A, 0x42420D9E, + 0xF6F6C16E, 0x2F2FB847, 0xDDDD06DF, 0x23233934, 0xCCCC6235, 0xF1F1C46A, 0xC1C112CF, 0x8585EBDC, + 0x8F8F9E22, 0x7171A1C9, 0x9090F0C0, 0xAAAA539B, 0x0101F189, 0x8B8BE1D4, 0x4E4E8CED, 0x8E8E6FAB, + 0xABABA212, 0x6F6F3EA2, 0xE6E6540D, 0xDBDBF252, 0x92927BBB, 0xB7B7B602, 0x6969CA2F, 0x3939D9A9, + 0xD3D30CD7, 0xA7A72361, 0xA2A2AD1E, 0xC3C399B4, 0x6C6C4450, 0x07070504, 0x04047FF6, 0x272746C2, + 0xACACA716, 0xD0D07625, 0x50501386, 0xDCDCF756, 0x84841A55, 0xE1E15109, 0x7A7A25BE, 0x1313EF91 + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m1 = array( + 0xA9D93939, 0x67901717, 0xB3719C9C, 0xE8D2A6A6, 0x04050707, 0xFD985252, 0xA3658080, 0x76DFE4E4, + 0x9A084545, 0x92024B4B, 0x80A0E0E0, 0x78665A5A, 0xE4DDAFAF, 0xDDB06A6A, 0xD1BF6363, 0x38362A2A, + 0x0D54E6E6, 0xC6432020, 0x3562CCCC, 0x98BEF2F2, 0x181E1212, 0xF724EBEB, 0xECD7A1A1, 0x6C774141, + 0x43BD2828, 0x7532BCBC, 0x37D47B7B, 0x269B8888, 0xFA700D0D, 0x13F94444, 0x94B1FBFB, 0x485A7E7E, + 0xF27A0303, 0xD0E48C8C, 0x8B47B6B6, 0x303C2424, 0x84A5E7E7, 0x54416B6B, 0xDF06DDDD, 0x23C56060, + 0x1945FDFD, 0x5BA33A3A, 0x3D68C2C2, 0x59158D8D, 0xF321ECEC, 0xAE316666, 0xA23E6F6F, 0x82165757, + 0x63951010, 0x015BEFEF, 0x834DB8B8, 0x2E918686, 0xD9B56D6D, 0x511F8383, 0x9B53AAAA, 0x7C635D5D, + 0xA63B6868, 0xEB3FFEFE, 0xA5D63030, 0xBE257A7A, 0x16A7ACAC, 0x0C0F0909, 0xE335F0F0, 0x6123A7A7, + 0xC0F09090, 0x8CAFE9E9, 0x3A809D9D, 0xF5925C5C, 0x73810C0C, 0x2C273131, 0x2576D0D0, 0x0BE75656, + 0xBB7B9292, 0x4EE9CECE, 0x89F10101, 0x6B9F1E1E, 0x53A93434, 0x6AC4F1F1, 0xB499C3C3, 0xF1975B5B, + 0xE1834747, 0xE66B1818, 0xBDC82222, 0x450E9898, 0xE26E1F1F, 0xF4C9B3B3, 0xB62F7474, 0x66CBF8F8, + 0xCCFF9999, 0x95EA1414, 0x03ED5858, 0x56F7DCDC, 0xD4E18B8B, 0x1C1B1515, 0x1EADA2A2, 0xD70CD3D3, + 0xFB2BE2E2, 0xC31DC8C8, 0x8E195E5E, 0xB5C22C2C, 0xE9894949, 0xCF12C1C1, 0xBF7E9595, 0xBA207D7D, + 0xEA641111, 0x77840B0B, 0x396DC5C5, 0xAF6A8989, 0x33D17C7C, 0xC9A17171, 0x62CEFFFF, 0x7137BBBB, + 0x81FB0F0F, 0x793DB5B5, 0x0951E1E1, 0xADDC3E3E, 0x242D3F3F, 0xCDA47676, 0xF99D5555, 0xD8EE8282, + 0xE5864040, 0xC5AE7878, 0xB9CD2525, 0x4D049696, 0x44557777, 0x080A0E0E, 0x86135050, 0xE730F7F7, + 0xA1D33737, 0x1D40FAFA, 0xAA346161, 0xED8C4E4E, 0x06B3B0B0, 0x706C5454, 0xB22A7373, 0xD2523B3B, + 0x410B9F9F, 0x7B8B0202, 0xA088D8D8, 0x114FF3F3, 0x3167CBCB, 0xC2462727, 0x27C06767, 0x90B4FCFC, + 0x20283838, 0xF67F0404, 0x60784848, 0xFF2EE5E5, 0x96074C4C, 0x5C4B6565, 0xB1C72B2B, 0xAB6F8E8E, + 0x9E0D4242, 0x9CBBF5F5, 0x52F2DBDB, 0x1BF34A4A, 0x5FA63D3D, 0x9359A4A4, 0x0ABCB9B9, 0xEF3AF9F9, + 0x91EF1313, 0x85FE0808, 0x49019191, 0xEE611616, 0x2D7CDEDE, 0x4FB22121, 0x8F42B1B1, 0x3BDB7272, + 0x47B82F2F, 0x8748BFBF, 0x6D2CAEAE, 0x46E3C0C0, 0xD6573C3C, 0x3E859A9A, 0x6929A9A9, 0x647D4F4F, + 0x2A948181, 0xCE492E2E, 0xCB17C6C6, 0x2FCA6969, 0xFCC3BDBD, 0x975CA3A3, 0x055EE8E8, 0x7AD0EDED, + 0xAC87D1D1, 0x7F8E0505, 0xD5BA6464, 0x1AA8A5A5, 0x4BB72626, 0x0EB9BEBE, 0xA7608787, 0x5AF8D5D5, + 0x28223636, 0x14111B1B, 0x3FDE7575, 0x2979D9D9, 0x88AAEEEE, 0x3C332D2D, 0x4C5F7979, 0x02B6B7B7, + 0xB896CACA, 0xDA583535, 0xB09CC4C4, 0x17FC4343, 0x551A8484, 0x1FF64D4D, 0x8A1C5959, 0x7D38B2B2, + 0x57AC3333, 0xC718CFCF, 0x8DF40606, 0x74695353, 0xB7749B9B, 0xC4F59797, 0x9F56ADAD, 0x72DAE3E3, + 0x7ED5EAEA, 0x154AF4F4, 0x229E8F8F, 0x12A2ABAB, 0x584E6262, 0x07E85F5F, 0x99E51D1D, 0x34392323, + 0x6EC1F6F6, 0x50446C6C, 0xDE5D3232, 0x68724646, 0x6526A0A0, 0xBC93CDCD, 0xDB03DADA, 0xF8C6BABA, + 0xC8FA9E9E, 0xA882D6D6, 0x2BCF6E6E, 0x40507070, 0xDCEB8585, 0xFE750A0A, 0x328A9393, 0xA48DDFDF, + 0xCA4C2929, 0x10141C1C, 0x2173D7D7, 0xF0CCB4B4, 0xD309D4D4, 0x5D108A8A, 0x0FE25151, 0x00000000, + 0x6F9A1919, 0x9DE01A1A, 0x368F9494, 0x42E6C7C7, 0x4AECC9C9, 0x5EFDD2D2, 0xC1AB7F7F, 0xE0D8A8A8 + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m2 = array( + 0xBC75BC32, 0xECF3EC21, 0x20C62043, 0xB3F4B3C9, 0xDADBDA03, 0x027B028B, 0xE2FBE22B, 0x9EC89EFA, + 0xC94AC9EC, 0xD4D3D409, 0x18E6186B, 0x1E6B1E9F, 0x9845980E, 0xB27DB238, 0xA6E8A6D2, 0x264B26B7, + 0x3CD63C57, 0x9332938A, 0x82D882EE, 0x52FD5298, 0x7B377BD4, 0xBB71BB37, 0x5BF15B97, 0x47E14783, + 0x2430243C, 0x510F51E2, 0xBAF8BAC6, 0x4A1B4AF3, 0xBF87BF48, 0x0DFA0D70, 0xB006B0B3, 0x753F75DE, + 0xD25ED2FD, 0x7DBA7D20, 0x66AE6631, 0x3A5B3AA3, 0x598A591C, 0x00000000, 0xCDBCCD93, 0x1A9D1AE0, + 0xAE6DAE2C, 0x7FC17FAB, 0x2BB12BC7, 0xBE0EBEB9, 0xE080E0A0, 0x8A5D8A10, 0x3BD23B52, 0x64D564BA, + 0xD8A0D888, 0xE784E7A5, 0x5F075FE8, 0x1B141B11, 0x2CB52CC2, 0xFC90FCB4, 0x312C3127, 0x80A38065, + 0x73B2732A, 0x0C730C81, 0x794C795F, 0x6B546B41, 0x4B924B02, 0x53745369, 0x9436948F, 0x8351831F, + 0x2A382A36, 0xC4B0C49C, 0x22BD22C8, 0xD55AD5F8, 0xBDFCBDC3, 0x48604878, 0xFF62FFCE, 0x4C964C07, + 0x416C4177, 0xC742C7E6, 0xEBF7EB24, 0x1C101C14, 0x5D7C5D63, 0x36283622, 0x672767C0, 0xE98CE9AF, + 0x441344F9, 0x149514EA, 0xF59CF5BB, 0xCFC7CF18, 0x3F243F2D, 0xC046C0E3, 0x723B72DB, 0x5470546C, + 0x29CA294C, 0xF0E3F035, 0x088508FE, 0xC6CBC617, 0xF311F34F, 0x8CD08CE4, 0xA493A459, 0xCAB8CA96, + 0x68A6683B, 0xB883B84D, 0x38203828, 0xE5FFE52E, 0xAD9FAD56, 0x0B770B84, 0xC8C3C81D, 0x99CC99FF, + 0x580358ED, 0x196F199A, 0x0E080E0A, 0x95BF957E, 0x70407050, 0xF7E7F730, 0x6E2B6ECF, 0x1FE21F6E, + 0xB579B53D, 0x090C090F, 0x61AA6134, 0x57825716, 0x9F419F0B, 0x9D3A9D80, 0x11EA1164, 0x25B925CD, + 0xAFE4AFDD, 0x459A4508, 0xDFA4DF8D, 0xA397A35C, 0xEA7EEAD5, 0x35DA3558, 0xED7AEDD0, 0x431743FC, + 0xF866F8CB, 0xFB94FBB1, 0x37A137D3, 0xFA1DFA40, 0xC23DC268, 0xB4F0B4CC, 0x32DE325D, 0x9CB39C71, + 0x560B56E7, 0xE372E3DA, 0x87A78760, 0x151C151B, 0xF9EFF93A, 0x63D163BF, 0x345334A9, 0x9A3E9A85, + 0xB18FB142, 0x7C337CD1, 0x8826889B, 0x3D5F3DA6, 0xA1ECA1D7, 0xE476E4DF, 0x812A8194, 0x91499101, + 0x0F810FFB, 0xEE88EEAA, 0x16EE1661, 0xD721D773, 0x97C497F5, 0xA51AA5A8, 0xFEEBFE3F, 0x6DD96DB5, + 0x78C578AE, 0xC539C56D, 0x1D991DE5, 0x76CD76A4, 0x3EAD3EDC, 0xCB31CB67, 0xB68BB647, 0xEF01EF5B, + 0x1218121E, 0x602360C5, 0x6ADD6AB0, 0x4D1F4DF6, 0xCE4ECEE9, 0xDE2DDE7C, 0x55F9559D, 0x7E487E5A, + 0x214F21B2, 0x03F2037A, 0xA065A026, 0x5E8E5E19, 0x5A785A66, 0x655C654B, 0x6258624E, 0xFD19FD45, + 0x068D06F4, 0x40E54086, 0xF298F2BE, 0x335733AC, 0x17671790, 0x057F058E, 0xE805E85E, 0x4F644F7D, + 0x89AF896A, 0x10631095, 0x74B6742F, 0x0AFE0A75, 0x5CF55C92, 0x9BB79B74, 0x2D3C2D33, 0x30A530D6, + 0x2ECE2E49, 0x49E94989, 0x46684672, 0x77447755, 0xA8E0A8D8, 0x964D9604, 0x284328BD, 0xA969A929, + 0xD929D979, 0x862E8691, 0xD1ACD187, 0xF415F44A, 0x8D598D15, 0xD6A8D682, 0xB90AB9BC, 0x429E420D, + 0xF66EF6C1, 0x2F472FB8, 0xDDDFDD06, 0x23342339, 0xCC35CC62, 0xF16AF1C4, 0xC1CFC112, 0x85DC85EB, + 0x8F228F9E, 0x71C971A1, 0x90C090F0, 0xAA9BAA53, 0x018901F1, 0x8BD48BE1, 0x4EED4E8C, 0x8EAB8E6F, + 0xAB12ABA2, 0x6FA26F3E, 0xE60DE654, 0xDB52DBF2, 0x92BB927B, 0xB702B7B6, 0x692F69CA, 0x39A939D9, + 0xD3D7D30C, 0xA761A723, 0xA21EA2AD, 0xC3B4C399, 0x6C506C44, 0x07040705, 0x04F6047F, 0x27C22746, + 0xAC16ACA7, 0xD025D076, 0x50865013, 0xDC56DCF7, 0x8455841A, 0xE109E151, 0x7ABE7A25, 0x139113EF + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m3 = array( + 0xD939A9D9, 0x90176790, 0x719CB371, 0xD2A6E8D2, 0x05070405, 0x9852FD98, 0x6580A365, 0xDFE476DF, + 0x08459A08, 0x024B9202, 0xA0E080A0, 0x665A7866, 0xDDAFE4DD, 0xB06ADDB0, 0xBF63D1BF, 0x362A3836, + 0x54E60D54, 0x4320C643, 0x62CC3562, 0xBEF298BE, 0x1E12181E, 0x24EBF724, 0xD7A1ECD7, 0x77416C77, + 0xBD2843BD, 0x32BC7532, 0xD47B37D4, 0x9B88269B, 0x700DFA70, 0xF94413F9, 0xB1FB94B1, 0x5A7E485A, + 0x7A03F27A, 0xE48CD0E4, 0x47B68B47, 0x3C24303C, 0xA5E784A5, 0x416B5441, 0x06DDDF06, 0xC56023C5, + 0x45FD1945, 0xA33A5BA3, 0x68C23D68, 0x158D5915, 0x21ECF321, 0x3166AE31, 0x3E6FA23E, 0x16578216, + 0x95106395, 0x5BEF015B, 0x4DB8834D, 0x91862E91, 0xB56DD9B5, 0x1F83511F, 0x53AA9B53, 0x635D7C63, + 0x3B68A63B, 0x3FFEEB3F, 0xD630A5D6, 0x257ABE25, 0xA7AC16A7, 0x0F090C0F, 0x35F0E335, 0x23A76123, + 0xF090C0F0, 0xAFE98CAF, 0x809D3A80, 0x925CF592, 0x810C7381, 0x27312C27, 0x76D02576, 0xE7560BE7, + 0x7B92BB7B, 0xE9CE4EE9, 0xF10189F1, 0x9F1E6B9F, 0xA93453A9, 0xC4F16AC4, 0x99C3B499, 0x975BF197, + 0x8347E183, 0x6B18E66B, 0xC822BDC8, 0x0E98450E, 0x6E1FE26E, 0xC9B3F4C9, 0x2F74B62F, 0xCBF866CB, + 0xFF99CCFF, 0xEA1495EA, 0xED5803ED, 0xF7DC56F7, 0xE18BD4E1, 0x1B151C1B, 0xADA21EAD, 0x0CD3D70C, + 0x2BE2FB2B, 0x1DC8C31D, 0x195E8E19, 0xC22CB5C2, 0x8949E989, 0x12C1CF12, 0x7E95BF7E, 0x207DBA20, + 0x6411EA64, 0x840B7784, 0x6DC5396D, 0x6A89AF6A, 0xD17C33D1, 0xA171C9A1, 0xCEFF62CE, 0x37BB7137, + 0xFB0F81FB, 0x3DB5793D, 0x51E10951, 0xDC3EADDC, 0x2D3F242D, 0xA476CDA4, 0x9D55F99D, 0xEE82D8EE, + 0x8640E586, 0xAE78C5AE, 0xCD25B9CD, 0x04964D04, 0x55774455, 0x0A0E080A, 0x13508613, 0x30F7E730, + 0xD337A1D3, 0x40FA1D40, 0x3461AA34, 0x8C4EED8C, 0xB3B006B3, 0x6C54706C, 0x2A73B22A, 0x523BD252, + 0x0B9F410B, 0x8B027B8B, 0x88D8A088, 0x4FF3114F, 0x67CB3167, 0x4627C246, 0xC06727C0, 0xB4FC90B4, + 0x28382028, 0x7F04F67F, 0x78486078, 0x2EE5FF2E, 0x074C9607, 0x4B655C4B, 0xC72BB1C7, 0x6F8EAB6F, + 0x0D429E0D, 0xBBF59CBB, 0xF2DB52F2, 0xF34A1BF3, 0xA63D5FA6, 0x59A49359, 0xBCB90ABC, 0x3AF9EF3A, + 0xEF1391EF, 0xFE0885FE, 0x01914901, 0x6116EE61, 0x7CDE2D7C, 0xB2214FB2, 0x42B18F42, 0xDB723BDB, + 0xB82F47B8, 0x48BF8748, 0x2CAE6D2C, 0xE3C046E3, 0x573CD657, 0x859A3E85, 0x29A96929, 0x7D4F647D, + 0x94812A94, 0x492ECE49, 0x17C6CB17, 0xCA692FCA, 0xC3BDFCC3, 0x5CA3975C, 0x5EE8055E, 0xD0ED7AD0, + 0x87D1AC87, 0x8E057F8E, 0xBA64D5BA, 0xA8A51AA8, 0xB7264BB7, 0xB9BE0EB9, 0x6087A760, 0xF8D55AF8, + 0x22362822, 0x111B1411, 0xDE753FDE, 0x79D92979, 0xAAEE88AA, 0x332D3C33, 0x5F794C5F, 0xB6B702B6, + 0x96CAB896, 0x5835DA58, 0x9CC4B09C, 0xFC4317FC, 0x1A84551A, 0xF64D1FF6, 0x1C598A1C, 0x38B27D38, + 0xAC3357AC, 0x18CFC718, 0xF4068DF4, 0x69537469, 0x749BB774, 0xF597C4F5, 0x56AD9F56, 0xDAE372DA, + 0xD5EA7ED5, 0x4AF4154A, 0x9E8F229E, 0xA2AB12A2, 0x4E62584E, 0xE85F07E8, 0xE51D99E5, 0x39233439, + 0xC1F66EC1, 0x446C5044, 0x5D32DE5D, 0x72466872, 0x26A06526, 0x93CDBC93, 0x03DADB03, 0xC6BAF8C6, + 0xFA9EC8FA, 0x82D6A882, 0xCF6E2BCF, 0x50704050, 0xEB85DCEB, 0x750AFE75, 0x8A93328A, 0x8DDFA48D, + 0x4C29CA4C, 0x141C1014, 0x73D72173, 0xCCB4F0CC, 0x09D4D309, 0x108A5D10, 0xE2510FE2, 0x00000000, + 0x9A196F9A, 0xE01A9DE0, 0x8F94368F, 0xE6C742E6, 0xECC94AEC, 0xFDD25EFD, 0xAB7FC1AB, 0xD8A8E0D8 + ); + + /** + * The Key Schedule Array + * + * @var array + * @access private + */ + var $K = array(); + + /** + * The Key depended S-Table 0 + * + * @var array + * @access private + */ + var $S0 = array(); + + /** + * The Key depended S-Table 1 + * + * @var array + * @access private + */ + var $S1 = array(); + + /** + * The Key depended S-Table 2 + * + * @var array + * @access private + */ + var $S2 = array(); + + /** + * The Key depended S-Table 3 + * + * @var array + * @access private + */ + var $S3 = array(); + + /** + * Holds the last used key + * + * @var array + * @access private + */ + var $kl; + + /** + * The Key Length (in bytes) + * + * @see Crypt_Twofish::setKeyLength() + * @var int + * @access private + */ + var $key_length = 16; + + /** + * Sets the key length. + * + * Valid key lengths are 128, 192 or 256 bits + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + switch (true) { + case $length <= 128: + $this->key_length = 16; + break; + case $length <= 192: + $this->key_length = 24; + break; + default: + $this->key_length = 32; + } + + parent::setKeyLength($length); + } + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (isset($this->kl['key']) && $this->key === $this->kl['key']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key); + + /* Key expanding and generating the key-depended s-boxes */ + $le_longs = unpack('V*', $this->key); + $key = unpack('C*', $this->key); + $m0 = $this->m0; + $m1 = $this->m1; + $m2 = $this->m2; + $m3 = $this->m3; + $q0 = $this->q0; + $q1 = $this->q1; + + $K = $S0 = $S1 = $S2 = $S3 = array(); + + switch (strlen($this->key)) { + case 16: + list($s7, $s6, $s5, $s4) = $this->_mdsrem($le_longs[1], $le_longs[2]); + list($s3, $s2, $s1, $s0) = $this->_mdsrem($le_longs[3], $le_longs[4]); + for ($i = 0, $j = 1; $i < 40; $i+= 2, $j+= 2) { + $A = $m0[$q0[$q0[$i] ^ $key[ 9]] ^ $key[1]] ^ + $m1[$q0[$q1[$i] ^ $key[10]] ^ $key[2]] ^ + $m2[$q1[$q0[$i] ^ $key[11]] ^ $key[3]] ^ + $m3[$q1[$q1[$i] ^ $key[12]] ^ $key[4]]; + $B = $m0[$q0[$q0[$j] ^ $key[13]] ^ $key[5]] ^ + $m1[$q0[$q1[$j] ^ $key[14]] ^ $key[6]] ^ + $m2[$q1[$q0[$j] ^ $key[15]] ^ $key[7]] ^ + $m3[$q1[$q1[$j] ^ $key[16]] ^ $key[8]]; + $B = ($B << 8) | ($B >> 24 & 0xff); + $A = $this->safe_intval($A + $B); + $K[] = $A; + $A = $this->safe_intval($A + $B); + $K[] = ($A << 9 | $A >> 23 & 0x1ff); + } + for ($i = 0; $i < 256; ++$i) { + $S0[$i] = $m0[$q0[$q0[$i] ^ $s4] ^ $s0]; + $S1[$i] = $m1[$q0[$q1[$i] ^ $s5] ^ $s1]; + $S2[$i] = $m2[$q1[$q0[$i] ^ $s6] ^ $s2]; + $S3[$i] = $m3[$q1[$q1[$i] ^ $s7] ^ $s3]; + } + break; + case 24: + list($sb, $sa, $s9, $s8) = $this->_mdsrem($le_longs[1], $le_longs[2]); + list($s7, $s6, $s5, $s4) = $this->_mdsrem($le_longs[3], $le_longs[4]); + list($s3, $s2, $s1, $s0) = $this->_mdsrem($le_longs[5], $le_longs[6]); + for ($i = 0, $j = 1; $i < 40; $i+= 2, $j+= 2) { + $A = $m0[$q0[$q0[$q1[$i] ^ $key[17]] ^ $key[ 9]] ^ $key[1]] ^ + $m1[$q0[$q1[$q1[$i] ^ $key[18]] ^ $key[10]] ^ $key[2]] ^ + $m2[$q1[$q0[$q0[$i] ^ $key[19]] ^ $key[11]] ^ $key[3]] ^ + $m3[$q1[$q1[$q0[$i] ^ $key[20]] ^ $key[12]] ^ $key[4]]; + $B = $m0[$q0[$q0[$q1[$j] ^ $key[21]] ^ $key[13]] ^ $key[5]] ^ + $m1[$q0[$q1[$q1[$j] ^ $key[22]] ^ $key[14]] ^ $key[6]] ^ + $m2[$q1[$q0[$q0[$j] ^ $key[23]] ^ $key[15]] ^ $key[7]] ^ + $m3[$q1[$q1[$q0[$j] ^ $key[24]] ^ $key[16]] ^ $key[8]]; + $B = ($B << 8) | ($B >> 24 & 0xff); + $A = $this->safe_intval($A + $B); + $K[] = $A; + $A = $this->safe_intval($A + $B); + $K[] = ($A << 9 | $A >> 23 & 0x1ff); + } + for ($i = 0; $i < 256; ++$i) { + $S0[$i] = $m0[$q0[$q0[$q1[$i] ^ $s8] ^ $s4] ^ $s0]; + $S1[$i] = $m1[$q0[$q1[$q1[$i] ^ $s9] ^ $s5] ^ $s1]; + $S2[$i] = $m2[$q1[$q0[$q0[$i] ^ $sa] ^ $s6] ^ $s2]; + $S3[$i] = $m3[$q1[$q1[$q0[$i] ^ $sb] ^ $s7] ^ $s3]; + } + break; + default: // 32 + list($sf, $se, $sd, $sc) = $this->_mdsrem($le_longs[1], $le_longs[2]); + list($sb, $sa, $s9, $s8) = $this->_mdsrem($le_longs[3], $le_longs[4]); + list($s7, $s6, $s5, $s4) = $this->_mdsrem($le_longs[5], $le_longs[6]); + list($s3, $s2, $s1, $s0) = $this->_mdsrem($le_longs[7], $le_longs[8]); + for ($i = 0, $j = 1; $i < 40; $i+= 2, $j+= 2) { + $A = $m0[$q0[$q0[$q1[$q1[$i] ^ $key[25]] ^ $key[17]] ^ $key[ 9]] ^ $key[1]] ^ + $m1[$q0[$q1[$q1[$q0[$i] ^ $key[26]] ^ $key[18]] ^ $key[10]] ^ $key[2]] ^ + $m2[$q1[$q0[$q0[$q0[$i] ^ $key[27]] ^ $key[19]] ^ $key[11]] ^ $key[3]] ^ + $m3[$q1[$q1[$q0[$q1[$i] ^ $key[28]] ^ $key[20]] ^ $key[12]] ^ $key[4]]; + $B = $m0[$q0[$q0[$q1[$q1[$j] ^ $key[29]] ^ $key[21]] ^ $key[13]] ^ $key[5]] ^ + $m1[$q0[$q1[$q1[$q0[$j] ^ $key[30]] ^ $key[22]] ^ $key[14]] ^ $key[6]] ^ + $m2[$q1[$q0[$q0[$q0[$j] ^ $key[31]] ^ $key[23]] ^ $key[15]] ^ $key[7]] ^ + $m3[$q1[$q1[$q0[$q1[$j] ^ $key[32]] ^ $key[24]] ^ $key[16]] ^ $key[8]]; + $B = ($B << 8) | ($B >> 24 & 0xff); + $A = $this->safe_intval($A + $B); + $K[] = $A; + $A = $this->safe_intval($A + $B); + $K[] = ($A << 9 | $A >> 23 & 0x1ff); + } + for ($i = 0; $i < 256; ++$i) { + $S0[$i] = $m0[$q0[$q0[$q1[$q1[$i] ^ $sc] ^ $s8] ^ $s4] ^ $s0]; + $S1[$i] = $m1[$q0[$q1[$q1[$q0[$i] ^ $sd] ^ $s9] ^ $s5] ^ $s1]; + $S2[$i] = $m2[$q1[$q0[$q0[$q0[$i] ^ $se] ^ $sa] ^ $s6] ^ $s2]; + $S3[$i] = $m3[$q1[$q1[$q0[$q1[$i] ^ $sf] ^ $sb] ^ $s7] ^ $s3]; + } + } + + $this->K = $K; + $this->S0 = $S0; + $this->S1 = $S1; + $this->S2 = $S2; + $this->S3 = $S3; + } + + /** + * _mdsrem function using by the twofish cipher algorithm + * + * @access private + * @param string $A + * @param string $B + * @return array + */ + function _mdsrem($A, $B) + { + // No gain by unrolling this loop. + for ($i = 0; $i < 8; ++$i) { + // Get most significant coefficient. + $t = 0xff & ($B >> 24); + + // Shift the others up. + $B = ($B << 8) | (0xff & ($A >> 24)); + $A<<= 8; + + $u = $t << 1; + + // Subtract the modular polynomial on overflow. + if ($t & 0x80) { + $u^= 0x14d; + } + + // Remove t * (a * x^2 + 1). + $B ^= $t ^ ($u << 16); + + // Form u = a*t + t/a = t*(a + 1/a). + $u^= 0x7fffffff & ($t >> 1); + + // Add the modular polynomial on underflow. + if ($t & 0x01) { + $u^= 0xa6 ; + } + + // Remove t * (a + 1/a) * (x^3 + x). + $B^= ($u << 24) | ($u << 8); + } + + return array( + 0xff & $B >> 24, + 0xff & $B >> 16, + 0xff & $B >> 8, + 0xff & $B); + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + $S0 = $this->S0; + $S1 = $this->S1; + $S2 = $this->S2; + $S3 = $this->S3; + $K = $this->K; + + $in = unpack("V4", $in); + $R0 = $K[0] ^ $in[1]; + $R1 = $K[1] ^ $in[2]; + $R2 = $K[2] ^ $in[3]; + $R3 = $K[3] ^ $in[4]; + + $ki = 7; + while ($ki < 39) { + $t0 = $S0[ $R0 & 0xff] ^ + $S1[($R0 >> 8) & 0xff] ^ + $S2[($R0 >> 16) & 0xff] ^ + $S3[($R0 >> 24) & 0xff]; + $t1 = $S0[($R1 >> 24) & 0xff] ^ + $S1[ $R1 & 0xff] ^ + $S2[($R1 >> 8) & 0xff] ^ + $S3[($R1 >> 16) & 0xff]; + $R2^= $this->safe_intval($t0 + $t1 + $K[++$ki]); + $R2 = ($R2 >> 1 & 0x7fffffff) | ($R2 << 31); + $R3 = ((($R3 >> 31) & 1) | ($R3 << 1)) ^ $this->safe_intval($t0 + ($t1 << 1) + $K[++$ki]); + + $t0 = $S0[ $R2 & 0xff] ^ + $S1[($R2 >> 8) & 0xff] ^ + $S2[($R2 >> 16) & 0xff] ^ + $S3[($R2 >> 24) & 0xff]; + $t1 = $S0[($R3 >> 24) & 0xff] ^ + $S1[ $R3 & 0xff] ^ + $S2[($R3 >> 8) & 0xff] ^ + $S3[($R3 >> 16) & 0xff]; + $R0^= $this->safe_intval($t0 + $t1 + $K[++$ki]); + $R0 = ($R0 >> 1 & 0x7fffffff) | ($R0 << 31); + $R1 = ((($R1 >> 31) & 1) | ($R1 << 1)) ^ $this->safe_intval($t0 + ($t1 << 1) + $K[++$ki]); + } + + // @codingStandardsIgnoreStart + return pack("V4", $K[4] ^ $R2, + $K[5] ^ $R3, + $K[6] ^ $R0, + $K[7] ^ $R1); + // @codingStandardsIgnoreEnd + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + $S0 = $this->S0; + $S1 = $this->S1; + $S2 = $this->S2; + $S3 = $this->S3; + $K = $this->K; + + $in = unpack("V4", $in); + $R0 = $K[4] ^ $in[1]; + $R1 = $K[5] ^ $in[2]; + $R2 = $K[6] ^ $in[3]; + $R3 = $K[7] ^ $in[4]; + + $ki = 40; + while ($ki > 8) { + $t0 = $S0[$R0 & 0xff] ^ + $S1[$R0 >> 8 & 0xff] ^ + $S2[$R0 >> 16 & 0xff] ^ + $S3[$R0 >> 24 & 0xff]; + $t1 = $S0[$R1 >> 24 & 0xff] ^ + $S1[$R1 & 0xff] ^ + $S2[$R1 >> 8 & 0xff] ^ + $S3[$R1 >> 16 & 0xff]; + $R3^= $this->safe_intval($t0 + ($t1 << 1) + $K[--$ki]); + $R3 = $R3 >> 1 & 0x7fffffff | $R3 << 31; + $R2 = ($R2 >> 31 & 0x1 | $R2 << 1) ^ $this->safe_intval($t0 + $t1 + $K[--$ki]); + + $t0 = $S0[$R2 & 0xff] ^ + $S1[$R2 >> 8 & 0xff] ^ + $S2[$R2 >> 16 & 0xff] ^ + $S3[$R2 >> 24 & 0xff]; + $t1 = $S0[$R3 >> 24 & 0xff] ^ + $S1[$R3 & 0xff] ^ + $S2[$R3 >> 8 & 0xff] ^ + $S3[$R3 >> 16 & 0xff]; + $R1^= $this->safe_intval($t0 + ($t1 << 1) + $K[--$ki]); + $R1 = $R1 >> 1 & 0x7fffffff | $R1 << 31; + $R0 = ($R0 >> 31 & 0x1 | $R0 << 1) ^ $this->safe_intval($t0 + $t1 + $K[--$ki]); + } + + // @codingStandardsIgnoreStart + return pack("V4", $K[0] ^ $R2, + $K[1] ^ $R3, + $K[2] ^ $R0, + $K[3] ^ $R1); + // @codingStandardsIgnoreEnd + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions =& Crypt_Twofish::_getLambdaFunctions(); + + // Max. 10 Ultra-Hi-optimized inline-crypt functions. After that, we'll (still) create very fast code, but not the ultimate fast one. + // (Currently, for Crypt_Twofish, one generated $lambda_function cost on php5.5@32bit ~140kb unfreeable mem and ~240kb on php5.5@64bit) + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_Twofish, {$this->mode}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + $safeint = $this->safe_intval_inline(); + + if (!isset($lambda_functions[$code_hash])) { + switch (true) { + case $gen_hi_opt_code: + $K = $this->K; + $init_crypt = ' + static $S0, $S1, $S2, $S3; + if (!$S0) { + for ($i = 0; $i < 256; ++$i) { + $S0[] = (int)$self->S0[$i]; + $S1[] = (int)$self->S1[$i]; + $S2[] = (int)$self->S2[$i]; + $S3[] = (int)$self->S3[$i]; + } + } + '; + break; + default: + $K = array(); + for ($i = 0; $i < 40; ++$i) { + $K[] = '$K_' . $i; + } + $init_crypt = ' + $S0 = $self->S0; + $S1 = $self->S1; + $S2 = $self->S2; + $S3 = $self->S3; + list(' . implode(',', $K) . ') = $self->K; + '; + } + + // Generating encrypt code: + $encrypt_block = ' + $in = unpack("V4", $in); + $R0 = '.$K[0].' ^ $in[1]; + $R1 = '.$K[1].' ^ $in[2]; + $R2 = '.$K[2].' ^ $in[3]; + $R3 = '.$K[3].' ^ $in[4]; + '; + for ($ki = 7, $i = 0; $i < 8; ++$i) { + $encrypt_block.= ' + $t0 = $S0[ $R0 & 0xff] ^ + $S1[($R0 >> 8) & 0xff] ^ + $S2[($R0 >> 16) & 0xff] ^ + $S3[($R0 >> 24) & 0xff]; + $t1 = $S0[($R1 >> 24) & 0xff] ^ + $S1[ $R1 & 0xff] ^ + $S2[($R1 >> 8) & 0xff] ^ + $S3[($R1 >> 16) & 0xff]; + $R2^= ' . sprintf($safeint, '$t0 + $t1 + ' . $K[++$ki]) . '; + $R2 = ($R2 >> 1 & 0x7fffffff) | ($R2 << 31); + $R3 = ((($R3 >> 31) & 1) | ($R3 << 1)) ^ ' . sprintf($safeint, '($t0 + ($t1 << 1) + ' . $K[++$ki] . ')') . '; + + $t0 = $S0[ $R2 & 0xff] ^ + $S1[($R2 >> 8) & 0xff] ^ + $S2[($R2 >> 16) & 0xff] ^ + $S3[($R2 >> 24) & 0xff]; + $t1 = $S0[($R3 >> 24) & 0xff] ^ + $S1[ $R3 & 0xff] ^ + $S2[($R3 >> 8) & 0xff] ^ + $S3[($R3 >> 16) & 0xff]; + $R0^= ' . sprintf($safeint, '($t0 + $t1 + ' . $K[++$ki] . ')') . '; + $R0 = ($R0 >> 1 & 0x7fffffff) | ($R0 << 31); + $R1 = ((($R1 >> 31) & 1) | ($R1 << 1)) ^ ' . sprintf($safeint, '($t0 + ($t1 << 1) + ' . $K[++$ki] . ')') . '; + '; + } + $encrypt_block.= ' + $in = pack("V4", ' . $K[4] . ' ^ $R2, + ' . $K[5] . ' ^ $R3, + ' . $K[6] . ' ^ $R0, + ' . $K[7] . ' ^ $R1); + '; + + // Generating decrypt code: + $decrypt_block = ' + $in = unpack("V4", $in); + $R0 = '.$K[4].' ^ $in[1]; + $R1 = '.$K[5].' ^ $in[2]; + $R2 = '.$K[6].' ^ $in[3]; + $R3 = '.$K[7].' ^ $in[4]; + '; + for ($ki = 40, $i = 0; $i < 8; ++$i) { + $decrypt_block.= ' + $t0 = $S0[$R0 & 0xff] ^ + $S1[$R0 >> 8 & 0xff] ^ + $S2[$R0 >> 16 & 0xff] ^ + $S3[$R0 >> 24 & 0xff]; + $t1 = $S0[$R1 >> 24 & 0xff] ^ + $S1[$R1 & 0xff] ^ + $S2[$R1 >> 8 & 0xff] ^ + $S3[$R1 >> 16 & 0xff]; + $R3^= ' . sprintf($safeint, '$t0 + ($t1 << 1) + ' . $K[--$ki]) . '; + $R3 = $R3 >> 1 & 0x7fffffff | $R3 << 31; + $R2 = ($R2 >> 31 & 0x1 | $R2 << 1) ^ ' . sprintf($safeint, '($t0 + $t1 + '.$K[--$ki] . ')') . '; + + $t0 = $S0[$R2 & 0xff] ^ + $S1[$R2 >> 8 & 0xff] ^ + $S2[$R2 >> 16 & 0xff] ^ + $S3[$R2 >> 24 & 0xff]; + $t1 = $S0[$R3 >> 24 & 0xff] ^ + $S1[$R3 & 0xff] ^ + $S2[$R3 >> 8 & 0xff] ^ + $S3[$R3 >> 16 & 0xff]; + $R1^= ' . sprintf($safeint, '$t0 + ($t1 << 1) + ' . $K[--$ki]) . '; + $R1 = $R1 >> 1 & 0x7fffffff | $R1 << 31; + $R0 = ($R0 >> 31 & 0x1 | $R0 << 1) ^ ' . sprintf($safeint, '($t0 + $t1 + '.$K[--$ki] . ')') . '; + '; + } + $decrypt_block.= ' + $in = pack("V4", ' . $K[0] . ' ^ $R2, + ' . $K[1] . ' ^ $R3, + ' . $K[2] . ' ^ $R0, + ' . $K[3] . ' ^ $R1); + '; + + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'init_encrypt' => '', + 'init_decrypt' => '', + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/app/Http/Controllers/dgaAdmin/HistoryController.php b/app/Http/Controllers/dgaAdmin/HistoryController.php new file mode 100644 index 0000000..02895f6 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/HistoryController.php @@ -0,0 +1,17 @@ +limit(500)->get(); + return view('dgaAdmin.history', compact('setting', 'history')); + } +} diff --git a/app/Http/Controllers/dgaAdmin/HomeController.php b/app/Http/Controllers/dgaAdmin/HomeController.php new file mode 100644 index 0000000..92d3026 --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/HomeController.php @@ -0,0 +1,167 @@ + HistoryPlay::sum('amount'), + 'amountWin' => HistoryPlay::where('status', 1)->sum('amount'), + 'amountLose'=> HistoryPlay::where('status', 0)->sum('amount'), + 'amountSend' => HistoryPlay::sum('receive'), + 'turnWin' => HistoryPlay::where('status', 1)->count(), + 'turnLose' => HistoryPlay::where('status', 0)->count(), + //CHANLE + 'amountSendCLDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'CL')->sum('receive'), + 'amountCLDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'CL')->sum('amount'), + 'turnLoseCLDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'CL', 'status' => 0])->count(), + 'turnWinCLDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'CL', 'status' => 1])->count(), + 'amountSendCLWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'CL')->sum('receive'), + 'amountCLWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'CL', 'status' => 0])->sum('amount'), + 'turnLoseCLWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'CL', 'status' => 0])->count(), + 'turnWinCLWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'CL', 'status' => 1])->count(), + 'amountSendCLMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'CL')->sum('receive'), + 'amountCLMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'CL', 'status' => 0])->sum('amount'), + 'turnLoseCLMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'CL', 'status' => 0])->count(), + 'turnWinCLMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'CL', 'status' => 1])->count(), + // CHANLE2 + 'amountSendCL2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'CL2')->sum('receive'), + 'amountCL2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'CL2')->sum('amount'), + 'turnLoseCL2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'CL2', 'status' => 0])->count(), + 'turnWinCL2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'CL2', 'status' => 1])->count(), + 'amountSendCL2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'CL2')->sum('receive'), + 'amountCL2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'CL2', 'status' => 0])->sum('amount'), + 'turnLoseCL2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'CL2', 'status' => 0])->count(), + 'turnWinCL2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'CL2', 'status' => 1])->count(), + 'amountSendCL2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'CL2')->sum('receive'), + 'amountCL2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'CL2', 'status' => 0])->sum('amount'), + 'turnLoseCL2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'CL2', 'status' => 0])->count(), + 'turnWinCL2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'CL2', 'status' => 1])->count(), + // TÀI XỈU + 'amountSendTXDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'TX')->sum('receive'), + 'amountTXDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'TX')->sum('amount'), + 'turnLoseTXDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'TX', 'status' => 0])->count(), + 'turnWinTXDay' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'TX', 'status' => 1])->count(), + 'amountSendTXWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'TX')->sum('receive'), + 'amountTXWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'TX', 'status' => 0])->sum('amount'), + 'turnLoseTXWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'TX', 'status' => 0])->count(), + 'turnWinTXWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'TX', 'status' => 1])->count(), + 'amountSendTXMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'TX')->sum('receive'), + 'amountTXMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'TX', 'status' => 0])->sum('amount'), + 'turnLoseTXMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'TX', 'status' => 0])->count(), + 'turnWinTXMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'TX', 'status' => 1])->count(), + // TÀI XỈU 2 + 'amountSendTX2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'TX2')->sum('receive'), + 'amountTX2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'TX2')->sum('amount'), + 'turnLoseTX2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'TX2', 'status' => 0])->count(), + 'turnWinTX2Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'TX2', 'status' => 1])->count(), + 'amountSendTX2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'TX2')->sum('receive'), + 'amountTX2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'TX2', 'status' => 0])->sum('amount'), + 'turnLoseTX2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'TX2', 'status' => 0])->count(), + 'turnWinTX2Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'TX2', 'status' => 1])->count(), + 'amountSendTX2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'TX2')->sum('receive'), + 'amountTX2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'TX2', 'status' => 0])->sum('amount'), + 'turnLoseTX2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'TX2', 'status' => 0])->count(), + 'turnWinTX2Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'TX2', 'status' => 1])->count(), + // 1 Phần 3 + 'amountSend1P3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', '1P3')->sum('receive'), + 'amount1P3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', '1P3')->sum('amount'), + 'turnLose1P3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => '1P3', 'status' => 0])->count(), + 'turnWin1P3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => '1P3', 'status' => 1])->count(), + 'amountSend1P3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', '1P3')->sum('receive'), + 'amount1P3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => '1P3', 'status' => 0])->sum('amount'), + 'turnLose1P3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => '1P3', 'status' => 0])->count(), + 'turnWin1P3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => '1P3', 'status' => 1])->count(), + 'amountSend1P3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', '1P3')->sum('receive'), + 'amount1P3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => '1P3', 'status' => 0])->sum('amount'), + 'turnLose1P3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => '1P3', 'status' => 0])->count(), + 'turnWin1P3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => '1P3', 'status' => 1])->count(), + // GẤP 3 + 'amountSendG3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'G3')->sum('receive'), + 'amountG3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'G3')->sum('amount'), + 'turnLoseG3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'G3', 'status' => 0])->count(), + 'turnWinG3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'G3', 'status' => 1])->count(), + 'amountSendG3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'G3')->sum('receive'), + 'amountG3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'G3', 'status' => 0])->sum('amount'), + 'turnLoseG3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'G3', 'status' => 0])->count(), + 'turnWinG3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'G3', 'status' => 1])->count(), + 'amountSendG3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'G3')->sum('receive'), + 'amountG3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'G3', 'status' => 0])->sum('amount'), + 'turnLoseG3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'G3', 'status' => 0])->count(), + 'turnWinG3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'G3', 'status' => 1])->count(), + // H3 + 'amountSendH3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'H3')->sum('receive'), + 'amountH3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'H3')->sum('amount'), + 'turnLoseH3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'H3', 'status' => 0])->count(), + 'turnWinH3Day' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'H3', 'status' => 1])->count(), + 'amountSendH3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'H3')->sum('receive'), + 'amountH3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'H3', 'status' => 0])->sum('amount'), + 'turnLoseH3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'H3', 'status' => 0])->count(), + 'turnWinH3Week' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'H3', 'status' => 1])->count(), + 'amountSendH3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'H3')->sum('receive'), + 'amountH3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'H3', 'status' => 0])->sum('amount'), + 'turnLoseH3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'H3', 'status' => 0])->count(), + 'turnWinH3Month' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'H3', 'status' => 1])->count(), + // LO + 'amountSendLODay' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'LO')->sum('receive'), + 'amountLODay' => HistoryPlay::whereDate('created_at', Carbon::today())->where('game', 'LO')->sum('amount'), + 'turnLoseLODay' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'LO', 'status' => 0])->count(), + 'turnWinLODay' => HistoryPlay::whereDate('created_at', Carbon::today())->where(['game' => 'LO', 'status' => 1])->count(), + 'amountSendLOWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where('game', 'LO')->sum('receive'), + 'amountLOWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'LO', 'status' => 0])->sum('amount'), + 'turnLoseLOWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'LO', 'status' => 0])->count(), + 'turnWinLOWeek' => HistoryPlay::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->where(['game' => 'LO', 'status' => 1])->count(), + 'amountSendLOMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where('game', 'LO')->sum('receive'), + 'amountLOMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'LO', 'status' => 0])->sum('amount'), + 'turnLoseLOMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'LO', 'status' => 0])->count(), + 'turnWinLOMonth' => HistoryPlay::whereMonth('created_at', date('m'))->where(['game' => 'LO', 'status' => 1])->count(), + ); + $day = array( + '1' => Carbon::now()->toDateString(), + '2' => Carbon::now()->subDay(1)->toDateString(), + '3' => Carbon::now()->subDay(2)->toDateString(), + '4' => Carbon::now()->subDay(3)->toDateString(), + '5' => Carbon::now()->subDay(4)->toDateString(), + '6' => Carbon::now()->subDay(5)->toDateString(), + '7' => Carbon::now()->subDay(6)->toDateString(), + ); + $moneyDay = array( + '1' => HistoryPlay::whereDate('created_at', Carbon::now()->toDateString())->sum('amount') / 1000, + '2' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(1)->toDateString())->sum('amount') / 1000, + '3' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(2)->toDateString())->sum('amount') / 1000, + '4' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(3)->toDateString())->sum('amount') / 1000, + '5' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(4)->toDateString())->sum('amount') / 1000, + '6' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(5)->toDateString())->sum('amount') / 1000, + '7' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(6)->toDateString())->sum('amount') / 1000, + ); + $receiveDay = array( + '1' => HistoryPlay::whereDate('created_at', Carbon::now()->toDateString())->sum('receive') / 1000, + '2' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(1)->toDateString())->sum('receive') / 1000, + '3' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(2)->toDateString())->sum('receive') / 1000, + '4' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(3)->toDateString())->sum('receive') / 1000, + '5' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(4)->toDateString())->sum('receive') / 1000, + '6' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(5)->toDateString())->sum('receive') / 1000, + '7' => HistoryPlay::whereDate('created_at', Carbon::now()->subDay(6)->toDateString())->sum('receive') / 1000, + ); + return view('dgaAdmin.home', compact('setting', 'total', 'day', 'moneyDay', 'receiveDay')); + } + + public function setting() { + $setting = Setting::first(); + return view('dgaAdmin.setting', compact('setting')); + } + + public function settingEdit(Request $request) { + $setting = Setting::first(); + $setting->update($request->all()); + return redirect()->back(); + } +} diff --git a/app/Http/Controllers/dgaAdmin/MiniGame.php b/app/Http/Controllers/dgaAdmin/MiniGame.php new file mode 100644 index 0000000..efc26ca --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/MiniGame.php @@ -0,0 +1,408 @@ + array( + 'chan' => 'C', + 'le' => 'L' + ), + 'MINIGAMECL2' => array( + 'chan' => '2', + 'le' => '1' + ), + 'MINIGAMETX' => array( + 'tai' => 'T', + 'xiu' => 'X' + ), + 'MINIGAMETX2' => array( + 'tai' => '4', + 'xiu' => '3' + ), + 'MINIGAME1P3' => array( + 'n0' => 'N0', + 'n1' => 'N1', + 'n2' => 'N2', + 'n3' => 'N3', + ), + 'MINIGAMELO' => array( + 'lo' => 'LO' + ), + 'MINIGAMEH3' => array( + 'h3' => 'H3' + ), + 'MINIGAMEG3' => array( + 'g3' => 'G3' + ) + ); + + public function logicMinigame($tranId, $comment, $game) + { + if ($game == 'CL') { + $number = substr((string) $tranId, -1); + if ($number == 0 || $number == 9) { + $rs = 3; // THUA + } else { + if ($number == 2 || $number == 4 || $number == 6 || $number == 8) { + $rs = $this->comment['MINIGAMECL']['chan']; // CHẴN + } else { + $rs = $this->comment['MINIGAMECL']['le']; // LẺ + } + } + + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == 'CL2') { + $number = substr((string) $tranId, -1); + if ($number == 0 || $number == 2 || $number == 4 || $number == 6 || $number == 8) { + $rs = $this->comment['MINIGAMECL2']['chan']; // CHẴN 2 + } else { + $rs = $this->comment['MINIGAMECL2']['le']; // LẺ 2 + } + + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == 'TX') { + $number = substr((string) $tranId, -1); + if ($number == 0 || $number == 9) { + $rs = 3; // THUA + } else { + if ($number >= 5) { + $rs = $this->comment['MINIGAMETX']['tai']; // TÀI + } else { + $rs = $this->comment['MINIGAMETX']['xiu']; // XỈU + } + } + + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == 'TX2') { + $number = substr((string) $tranId, -1); + + if ($number >= 5) { + $rs = $this->comment['MINIGAMETX2']['tai']; // TÀI + } else { + $rs = $this->comment['MINIGAMETX2']['xiu']; // XỈU + } + + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == '1P3') { + $number = substr((string) $tranId, -1); + if ($number == '0') { + $rs = $this->comment['MINIGAME1P3']['n0']; // N0 + } else if ($number == '1' || $number == '2' || $number == '3') { + $rs = $this->comment['MINIGAME1P3']['n1']; // N1 + } else if ($number == '4' || $number == '5' || $number == '6') { + $rs = $this->comment['MINIGAME1P3']['n2']; // N2 + } else if ($number == '7' || $number == '8' || $number == '9') { + $rs = $this->comment['MINIGAME1P3']['n3']; // N3 + } + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == 'LO') { + $number = substr((string) $tranId, -2); + if ($number == 01 || $number == 03 || $number == 12 || $number == 19 || $number == 23 || $number == 24 || $number == 30 || $number == 33 || $number == 39 || $number == 48 || $number == 54 || $number == 55 || $number == 60 || $number == 61 || $number == 71 || $number == 77 || $number == 81 || $number == 82 || $number == 83 || $number == 67 || $number == 88 || $number == 76 || $number == 64 || $number == 79 || $number == 29 || $number == 99) { + $rs = $this->comment['MINIGAMELO']['lo']; // LO + } + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == 'H3') { + $number1 = substr((string) $tranId, -1); + $number2 = substr((string) $tranId, -2, 1); + $number = $number2 - $number1; + if ($number == 9 || $number == 7 || $number == 5 || $number == 3) { + $rs = $this->comment['MINIGAMEH3']['h3']; // H3 + } + if ($rs == $comment) { + return true; + } else { + return false; + } + } else if ($game == 'G3') { + $number1 = substr((string) $tranId, -2); + $number2 = substr((string) $tranId, -3); + if ($number1 == 02 || $number1 == 13 || $number1 == 17 || $number1 == 19 || $number1 == 21 || $number1 == 29 || $number1 == 35 || $number1 == 37 || $number1 == 47 || $number1 == 49 || $number1 == 51 || $number1 == 54 || $number1 == 57 || $number1 == 63 || $number1 == 64 || $number1 == 74 || $number1 == 83 || $number1 == 91 || $number1 == 95 || $number1 == 96) { + $rs = $this->comment['MINIGAMEG3']['g3']; // G3 + } else if ($number1 == 66 || $number1 == 99) { + $rs = $this->comment['MINIGAMEG3']['g3']; // G3 + } else if ($number2 == 123 || $number2 == 234 || $number2 == 456 || $number2 == 678 || $number2 == 789) { + $rs = $this->comment['MINIGAMEG3']['g3']; // G3 + } + if ($rs == $comment) { + return true; + } else { + return false; + } + } + } + + public function XuLiMiniGame() + { + $momo = Momo::where('status', 1)->get(); + $setting = Setting::first(); + foreach ($momo as $row) { + $url = route('admin.historyMomo', ['phone' => $row->phone]); + $response = Http::get($url)->json(); + + if (!empty($response['data'])) { + foreach ($response['data'] as $data) { + $comment = $data['comment']; + $amount = $data['amount']; + $partnerId = $data['patnerID']; + $partnerName = $data['partnerName']; + $tranId = $data['tranId']; + $history = HistoryPlay::where('tranId', $tranId)->first(); + if (!$history) { + if (Str::upper($comment) == $this->comment['MINIGAMECL']['chan'] || Str::upper($comment) == $this->comment['MINIGAMECL']['le']) { // MINIGAME CHẴN LẺ + $game = 'CL'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $receive = $amount * $setting->ratioCL; // TIỀN NHẬN KHI THẮN + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAMECL2']['chan'] || Str::upper($comment) == $this->comment['MINIGAMECL2']['le']) { // MINIGAME CHẴN LẺ 2 + $game = 'CL2'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $receive = $amount * $setting->ratioCL2; // TIỀN NHẬN KHI THẮN + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAMETX']['tai'] || Str::upper($comment) == $this->comment['MINIGAMETX']['xiu']) { // MINIGAME TÀI XỈU + $game = 'TX'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $receive = $amount * $setting->ratioTX; // TIỀN NHẬN KHI THẮN + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAMETX2']['tai'] || Str::upper($comment) == $this->comment['MINIGAMETX2']['xiu']) { // MINIGAME TÀI XỈU 2 + $game = 'TX2'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $receive = $amount * $setting->ratioTX2; // TIỀN NHẬN KHI THẮN + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAME1P3']['n0'] || Str::upper($comment) == $this->comment['MINIGAME1P3']['n1'] || Str::upper($comment) == $this->comment['MINIGAME1P3']['n2'] || Str::upper($comment) == $this->comment['MINIGAME1P3']['n3']) { // MINIGAME 1 PHẦN 3 + $game = '1P3'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + if ($comment != 'N0') { + $receive = $amount * explode('|', $setting->ratio1P3)[0]; // TIỀN NHẬN KHI THẮN + } else { + $receive = $amount * explode('|', $setting->ratio1P3)[1]; // TIỀN NHẬN KHI THẮN + } + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAMELO']['lo']) { // MINIGAME LO + $game = 'LO'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $receive = $amount * $setting->ratioLO; // TIỀN NHẬN KHI THẮN + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAMEH3']['h3']) { // MINIGAME H3 + $game = 'H3'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $number1 = substr((string) $tranId, -1); + $number2 = substr((string) $tranId, -2, 1); + $number = $number2 - $number1; + if ($number == 3) { + $receive = $amount * explode('|', $setting->ratioH3)[0];; // TIỀN NHẬN KHI THẮNG + } else if ($number == 5) { + $receive = $amount * explode('|', $setting->ratioH3)[1];; // TIỀN NHẬN KHI THẮNG + } else if ($number == 7) { + $receive = $amount * explode('|', $setting->ratioH3)[2];; // TIỀN NHẬN KHI THẮNG + } else if ($number == 9) { + $receive = $amount * explode('|', $setting->ratioH3)[3];; // TIỀN NHẬN KHI THẮNG + } + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else if (Str::upper($comment) == $this->comment['MINIGAMEH3']['h3']) { // MINIGAME H3 + $game = 'G3'; + if ($amount >= $row->min && $amount <= $row->max) { + if ($this->logicMinigame($tranId, Str::upper($comment), $game) == true) { // THẮNG + $number1 = substr((string) $tranId, -1); + $number2 = substr((string) $tranId, -3); + if ($number1 == 02 || $number1 == 13 || $number1 == 17 || $number1 == 19 || $number1 == 21 || $number1 == 29 || $number1 == 35 || $number1 == 37 || $number1 == 47 || $number1 == 49 || $number1 == 51 || $number1 == 54 || $number1 == 57 || $number1 == 63 || $number1 == 64 || $number1 == 74 || $number1 == 83 || $number1 == 91 || $number1 == 95 || $number1 == 96) { + $receive = $amount * explode('|', $setting->ratioG3)[0];; // TIỀN NHẬN KHI THẮNG + } else if ($number1 == 66 || $number1 == 99) { + $receive = $amount * explode('|', $setting->ratioG3)[1];; // TIỀN NHẬN KHI THẮNG + } else if ($number2 == 123 || $number2 == 234 || $number2 == 456 || $number2 == 678 || $number2 == 789) { + $receive = $amount * explode('|', $setting->ratioG3)[2];; // TIỀN NHẬN KHI THẮNG + } + $status = 1; // THẮNG + $pay = 0; // CHƯA CHUYỂN + } else { + $receive = 0; + $status = 0; // THUA + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } else { + $receive = 0; // THUA + $status = 3; // GIỚI HẠN + $pay = 1; // THUA ĐỂ LÀ ĐÃ CHUYỂN + } + } + HistoryPlay::create([ + 'tranId' => $tranId, + 'partnerName' => $partnerName, + 'partnerId' => $partnerId, + 'comment' => $comment, + 'amount' => $amount, + 'receive' => $receive, + 'status' => $status, + 'pay' => $pay, + 'game' => $game, + 'phoneSend' => $row->phone + ]); + } + } + } + } + } + + public function payMoneyMiniGame() { + $setting = Setting::first(); + $history = HistoryPlay::where(['status' => 1, 'pay' => 0])->orWhere('pay', 100)->get(); + foreach ($history as $row) { + $info = HistoryPlay::where(['tranId' => $row->tranId])->first(); + $url = route('admin.sendMoneyMomo', ['phone' => $info->phoneSend, 'amount' => $info->receive, 'comment' => $setting->content.$row->tranId, 'receiver' => $info->partnerId]); + $response = Http::get($url)->json(); + if ($response['status'] != 'success') { // CHUYỂN TIỀN LỖI + $info->pay = 100; + $info->save(); + } else { + $momo = Momo::where('phone', $info->phoneSend)->first(); + $momo->times = $momo->times + 1; + $momo->amount = $momo->amount + $info->receive; + $momo->save(); + $info->pay = 1; + $info->save(); + } + } + } + + public function payDayMission() { + $setting = Setting::first(); + $history = HistoryDayMission::where(['status' => 1, 'pay' => 0])->get(); + $phone = Momo::where('status', 1)->inRandomOrder()->first()->phone; + foreach ($history as $row) { + $info = HistoryDayMission::where(['status' => 1, 'pay' => 0, 'id' => $row->id])->first(); + $url = route('admin.sendMoneyMomo', ['phone' => $phone, 'amount' => $info->receive, 'comment' => $setting->content_day.' '.Str::upper(Str::random(6)), 'receiver' => $info->phone]); + $response = Http::get($url)->json(); + if ($response['status'] != 'success') { // CHUYỂN TIỀN LỖI + $info->pay = 100; + $info->save(); + } else { + $momo = Momo::where('phone', $phone)->first(); + $momo->times = $momo->times + 1; + $momo->amount = $momo->amount + $info->receive; + $momo->save(); + $info->pay = 1; + $info->save(); + } + } + } + +} diff --git a/app/Http/Controllers/dgaAdmin/MomoApi.php b/app/Http/Controllers/dgaAdmin/MomoApi.php new file mode 100644 index 0000000..4bd86fd --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/MomoApi.php @@ -0,0 +1,788 @@ + array( + 'partnerCode' => '110', + ), + 'VTB' => array( + 'partnerCode' => '102', + ), + 'MB' => array( + 'partnerCode' => '301', + ), + 'ACB' => array( + 'partnerCode' => '115', + ), + 'VCB' => array( + 'partnerCode' => '12345', + ), + + 'VPB' => array( + 'partnerCode' => '103', + ), + 'VIB' => array( + 'partnerCode' => '113', + ), + 'EXB' => array( + 'partnerCode' => '107', + ), + 'OCB' => array( + 'partnerCode' => '104', + ), + 'SCB' => array( + 'partnerCode' => '111', + ), + + ); + + private $ohash; + + private $TimeSetUp = 600; // seconds + + private $amount = 100000; + + private $hours = 200; + + private $keys; + + private $send = array(); + + private $rsa; + + private $URLAction = array( + "CHECK_USER_BE_MSG" => "https://api.momo.vn/backend/auth-app/public/CHECK_USER_BE_MSG", //Check người dùng + "SEND_OTP_MSG" => "https://api.momo.vn/backend/otp-app/public/SEND_OTP_MSG", //Gửi OTP + "REG_DEVICE_MSG" => "https://api.momo.vn/backend/otp-app/public/REG_DEVICE_MSG", // Xác minh OTP + "QUERY_TRAN_HIS_MSG" => "https://owa.momo.vn/api/QUERY_TRAN_HIS_MSG", // Check ls giao dịch + "USER_LOGIN_MSG" => "https://owa.momo.vn/public/login", // Đăng Nhập + "QUERY_TRAN_HIS_MSG_NEW" => "https://m.mservice.io/hydra/v2/user/noti", // check ls giao dịch + "M2MU_INIT" => "https://owa.momo.vn/api/M2MU_INIT", // Chuyển tiền + "M2MU_CONFIRM" => "https://owa.momo.vn/api/M2MU_CONFIRM", // Chuyển tiền + "LOAN_MSG" => "https://owa.momo.vn/api/LOAN_MSG", // yêu cầu chuyển tiền + 'M2M_VALIDATE_MSG' => 'https://owa.momo.vn/api/M2M_VALIDATE_MSG', // Ko rõ chức năng + 'CHECK_USER_PRIVATE' => 'https://owa.momo.vn/api/CHECK_USER_PRIVATE', // Check người dùng ẩn + 'TRAN_HIS_INIT_MSG' => 'https://owa.momo.vn/api/TRAN_HIS_INIT_MSG', // Rút tiền, chuyển tiền + 'TRAN_HIS_CONFIRM_MSG' => 'https://owa.momo.vn/api/TRAN_HIS_CONFIRM_MSG', // rút tiền chuyển tiền + 'GET_CORE_PREPAID_CARD' => 'https://owa.momo.vn/api/sync/GET_CORE_PREPAID_CARD', + 'ins_qoala_phone' => 'https://owa.momo.vn/proxy/ins_qoala_phone', + 'GET_DETAIL_LOAN' => 'https://owa.momo.vn/api/GET_DETAIL_LOAN', // Get danh sách yêu cầu chuyển + 'LOAN_UPDATE_STATUS' => 'https://owa.momo.vn/api/LOAN_UPDATE_STATUS', // Từ chỗi chuyển tiền + 'CANCEL_LOAN_REQUEST' => 'https://owa.momo.vn/api/CANCEL_LOAN_REQUEST', // Huỷe chuyển tiền + 'LOAN_SUGGEST' => 'https://owa.momo.vn/api/LOAN_SUGGEST', + 'STANDARD_LOAN_REQUEST' => 'https://owa.momo.vn/api/STANDARD_LOAN_REQUEST', + 'SAY_THANKS' => 'https://owa.momo.vn/api/SAY_THANKS', // Gửi lời nhắn khi nhận tiền + 'HEARTED_TRANSACTIONS' => 'https://owa.momo.vn/api/HEARTED_TRANSACTIONS', + 'VERIFY_MAP' => 'https://owa.momo.vn/api/VERIFY_MAP', // Liên kết ngân hàng + 'service' => "https://owa.momo.vn/service", // Check ngân hàng qua stk + 'NEXT_PAGE_MSG' => 'https://owa.momo.vn/api/NEXT_PAGE_MSG', // mua thẻ điện thoại + 'dev_backend_gift-recommend' => 'https://owa.momo.vn/proxy/dev_backend_gift-recommend', // check gift + 'ekyc_init' => 'https://owa.momo.vn/proxy/ekyc_init', // Xác minh cmnd + 'ekyc_ocr' => 'https://owa.momo.vn/proxy/ekyc_ocr', // xác minh cmnd + 'GetDataStoreMsg' => 'https://owa.momo.vn/api/GetDataStoreMsg', // Get danh sách ngân hàng đã chuyển + 'VOUCHER_GET' => 'https://owa.momo.vn/api/sync/VOUVHER_GET', // get voucher + 'END_USER_QUICK_REGISTER' => 'https://api.momo.vn/backend/auth-app/public/END_USER_QUICK_REGISTER', // đăng kí + 'AGENT_MODIFY' => 'https://api.momo.vn/backend/auth-app/api/AGENT_MODIFY', // Cập nhật tên email + 'ekyc_ocr_result' => 'https://owa.momo.vn/proxy/ekyc_ocr_result', // xác minh cmnd + 'CHECK_INFO' => 'https://owa.momo.vn/api/CHECK_INFO', // Check hóa đơn + 'BANK_OTP' => 'https://owa.momo.vn/api/BANK_OTP', // Rút tiền + 'SERVICE_UNAVAILABLE' => 'https://owa.momo.vn/api/SERVICE_UNAVAILABLE', // Bên bảo mật + 'ekyc_ocr_confirm' => 'https://owa.momo.vn/proxy/ekyc_ocr_confirm', //Xác minh cmnd + 'sync' => 'https://owa.momo.vn/api/sync', // Lấy biến động số dư + 'MANAGE_CREDIT_CARD' => 'https://owa.momo.vn/api/MANAGE_CREDIT_CARD', //Thêm visa marter card + 'UN_MAP' => 'https://owa.momo.vn/api/UN_MAP', // Hủy liên kết thẻ + 'WALLET_MAPPING' => 'https://owa.momo.vn/api/WALLET_MAPPING', // Liên kết thẻ + 'NAPAS_CASHIN_INIT_MSG' => 'https://owa.momo.vn/api/NAPAS_CASHIN_INIT_MSG', + "CARD_GET" => "https://owa.momo.vn/api/sync/CARD_GET", + 'NAPAS_CASHIN_DELETE_TOKEN_MSG' => 'https://owa.momo.vn/api/NAPAS_CASHIN_DELETE_TOKEN_MSG', + 'API_DEFAULT_SOURCE' => 'https://owa.momo.vn/api/API_DEFAULT_SOURCE' + + ); + + private $momo_data_config = array( + "appVer" => 31110, + "appCode" => "3.1.11" + + ); + + public function SendOTP($data) + { + $result = $this->SEND_OTP_MSG($data); + if ($result["errorCode"] != 0) { + return array( + "status" => "error", + "code" => $result["errorCode"], + "message" => $result["errorDesc"] + ); + } else { + return array( + "status" => "success", + "message" => "Thành công" + ); + } + return $result; + } + + private function SEND_OTP_MSG($data) + { + $header = array( + "agent_id: undefined", + "sessionkey:", + "user_phone: undefined", + "authorization: Bearer undefined", + "msgtype: SEND_OTP_MSG", + "Host: api.momo.vn", + "User-Agent: okhttp/3.14.17", + "app_version: " . $this->momo_data_config["appVer"], + "app_code: " . $this->momo_data_config["appCode"], + "device_os: ANDROID" + ); + $microtime = $this->get_microtime(); + $Data = array( + 'user' => $data['phone'], + 'msgType' => 'SEND_OTP_MSG', + 'cmdId' => (string) $microtime . '000000', + 'lang' => 'vi', + 'time' => $microtime, + 'channel' => 'APP', + 'appVer' => $this->momo_data_config["appVer"], + 'appCode' => $this->momo_data_config["appCode"], + 'deviceOS' => 'ANDROID', + 'buildNumber' => 0, + 'appId' => 'vn.momo.platform', + 'result' => true, + 'errorCode' => 0, + 'errorDesc' => '', + 'momoMsg' => + array( + '_class' => 'mservice.backend.entity.msg.RegDeviceMsg', + 'number' => $data['phone'], + 'imei' => $data["imei"], + 'cname' => 'Vietnam', + 'ccode' => '084', + 'device' => $data["device"], + 'firmware' => '23', + 'hardware' => $data["hardware"], + 'manufacture' => $data["facture"], + 'csp' => '', + 'icc' => '', + 'mcc' => '452', + 'device_os' => 'Ios', + 'secure_id' => $data['SECUREID'], + ), + 'extra' => + array( + 'action' => 'SEND', + 'rkey' => $data["rkey"], + 'AAID' => $data["AAID"], + 'IDFA' => '', + 'TOKEN' => $data["TOKEN"], + 'SIMULATOR' => '', + 'SECUREID' => $data['SECUREID'], + 'MODELID' => $data["MODELID"], + 'isVoice' => false, + 'REQUIRE_HASH_STRING_OTP' => true, + 'checkSum' => '', + ), + ); + return $this->CURL("SEND_OTP_MSG", $header, $Data); + } + + public function REG_DEVICE_MSG($data) + { + $microtime = $this->get_microtime(); + $header = array( + "agent_id: undefined", + "sessionkey:", + "user_phone: undefined", + "authorization: Bearer undefined", + "msgtype: REG_DEVICE_MSG", + "Host: api.momo.vn", + "User-Agent: okhttp/3.14.17", + "app_version: " . $this->momo_data_config["appVer"], + "app_code: " . $this->momo_data_config["appCode"], + "device_os: ANDROID" + ); + $Data = '{ + "user": "' . $data["phone"] . '", + "msgType": "REG_DEVICE_MSG", + "cmdId": "' . $microtime . '000000", + "lang": "vi", + "time": ' . $microtime . ', + "channel": "APP", + "appVer": ' . $this->momo_data_config["appVer"] . ', + "appCode": "' . $this->momo_data_config["appCode"] . '", + "deviceOS": "ANDROID", + "buildNumber": 0, + "appId": "vn.momo.platform", + "result": true, + "errorCode": 0, + "errorDesc": "", + "momoMsg": { + "_class": "mservice.backend.entity.msg.RegDeviceMsg", + "number": "' . $data["phone"] . '", + "imei": "' . $data["imei"] . '", + "cname": "Vietnam", + "ccode": "084", + "device": "' . $data["device"] . '", + "firmware": "23", + "hardware": "' . $data["hardware"] . '", + "manufacture": "' . $data["facture"] . '", + "csp": "", + "icc": "", + "mcc": "", + "device_os": "Android", + "secure_id": "' . $data["SECUREID"] . '" + }, + "extra": { + "ohash": "' . $data['ohash'] . '", + "AAID": "' . $data["AAID"] . '", + "IDFA": "", + "TOKEN": "' . $data["TOKEN"] . '", + "SIMULATOR": "", + "SECUREID": "' . $data["SECUREID"] . '", + "MODELID": "' . $data["MODELID"] . '", + "checkSum": "" + } + }'; + return $this->CURL("REG_DEVICE_MSG", $header, $Data); + } + + public function USER_LOGIN_MSG($data) + { + $microtime = $this->get_microtime(); + $header = array( + "agent_id: " . $data["agent_id"], + "user_phone: " . $data["phone"], + "sessionkey: " . (!empty($data["sessionkey"])) ? $data["sessionkey"] : "", + "authorization: Bearer " . $data["authorization"], + "msgtype: USER_LOGIN_MSG", + "Host: owa.momo.vn", + "user_id: " . $data["phone"], + "User-Agent: okhttp/3.14.17", + "app_version: " . $this->momo_data_config["appVer"], + "app_code: " . $this->momo_data_config["appCode"], + "device_os: ANDROID" + ); + $Data = array( + 'user' => $data['phone'], + 'msgType' => 'USER_LOGIN_MSG', + 'pass' => $data['password'], + 'cmdId' => (string) $microtime . '000000', + 'lang' => 'vi', + 'time' => $microtime, + 'channel' => 'APP', + 'appVer' => $this->momo_data_config["appVer"], + 'appCode' => $this->momo_data_config["appCode"], + 'deviceOS' => 'ANDROID', + 'buildNumber' => 0, + 'appId' => 'vn.momo.platform', + 'result' => true, + 'errorCode' => 0, + 'errorDesc' => '', + 'momoMsg' => + array( + '_class' => 'mservice.backend.entity.msg.LoginMsg', + 'isSetup' => false, + ), + 'extra' => + array( + 'pHash' => $this->get_pHash($data), + 'AAID' => $data['AAID'], + 'IDFA' => '', + 'TOKEN' => $data['TOKEN'], + 'SIMULATOR' => '', + 'SECUREID' => $data['SECUREID'], + 'MODELID' => $data['MODELID'], + 'checkSum' => $this->generateCheckSum('USER_LOGIN_MSG', $microtime, $data), + ), + ); + return $this->CURL("USER_LOGIN_MSG", $header, $Data); + } + + public function CheckHisNew($hours = 5, $data) + { + $begin = (time() - (3600 * $hours)) * 1000; + $header = array( + "authorization: Bearer " . $data["authorization"], + "user_phone: " . $data["phone"], + "sessionkey: " . $data["sessionkey"], + "agent_id: " . $data["agent_id"], + 'app_version: ' . $this->momo_data_config["appVer"], + 'app_code: ' . $this->momo_data_config["appCode"], + "Host: m.mservice.io" + ); + $Data = '{ + "userId": "' . $data['phone'] . '", + "fromTime": ' . $begin . ', + "toTime": ' . $this->get_microtime() . ', + "limit": 5000, + "cursor": "", + "cusPhoneNumber": "" + }'; + + $result = $this->CURL("QUERY_TRAN_HIS_MSG_NEW", $header, $Data); + if (!is_array($result)) { + return array( + "status" => "error", + "code" => -5, + "message" => "Hết thời gian truy cập vui lòng đăng nhập lại" + ); + } + $tranHisMsg = $result["message"]["data"]["notifications"]; + $return = array(); + foreach ($tranHisMsg as $value) { + if($value["type"] != 77) continue; + $extra = json_decode($value["extra"],true); + $amount = $value['caption']; + $name = explode("từ", $amount)[1] ?: ""; + if (strpos($amount, "Nhận") !== false && $name) { + preg_match('#Nhận (.+?)đ#is', $amount, $amount); + $amount = str_replace(".", "", $amount[1]) > 0 ? str_replace(".", "", $amount[1]) : '0'; + //Cover body to comment + $comment = $value['body']; + $comment = ltrim($comment, '"'); + $comment = explode('"', $comment); + $comment = $comment[0]; + if ($comment == "Nhấn để xem chi tiết.") { + $comment = ""; + } + $return[] = array( + "tranId" => $value["tranId"], + "ID" => $value["ID"], + "patnerID" => $value["sender"], + "partnerName" => $name, + "comment" => $comment, + "amount" => (int)$amount, + "millisecond" => $value["time"] + ); + } + } + return array('status' => 'success', 'author' => 'DUNGA', 'data' => $return); + } + + public function CHECK_USER_PRIVATE($receiver, $data) + { + $microtime = $this->get_microtime(); + $requestkeyRaw = $this->generateRandom(32); + $requestkey = $this->RSA_Encrypt($data["RSA_PUBLIC_KEY"], $requestkeyRaw); + $header = array( + "agent_id: " . $data["agent_id"], + "user_phone: " . $data["phone"], + "sessionkey: " . $data["sessionkey"], + "authorization: Bearer " . $data["authorization"], + "msgtype: CHECK_USER_PRIVATE", + "userid: " . $data["phone"], + "requestkey: " . $requestkey, + "Host: owa.momo.vn" + ); + $Data = '{ + "user":"' . $data['phone'] . '", + "msgType":"CHECK_USER_PRIVATE", + "cmdId":"' . $microtime . '000000", + "lang":"vi", + "time":' . (int) $microtime . ', + "channel":"APP", + "appVer": ' . $this->momo_data_config["appVer"] . ', + "appCode": "' . $this->momo_data_config["appCode"] . '", + "deviceOS":"ANDROID", + "buildNumber":1916, + "appId":"vn.momo.transfer", + "result":true, + "errorCode":0, + "errorDesc":"", + "momoMsg": + { + "_class":"mservice.backend.entity.msg.LoginMsg", + "getMutualFriend":false + }, + "extra": + { + "CHECK_INFO_NUMBER":"' . $receiver . '", + "checkSum":"' . $this->generateCheckSum('CHECK_USER_PRIVATE', $microtime, $data) . '" + } + }'; + return $this->CURL("CHECK_USER_PRIVATE", $header, $this->Encrypt_data($Data, $requestkeyRaw)); + } + + public function CHECK_USER_BE_MSG($data) + { + $microtime = $this->get_microtime(); + $header = array( + "agent_id: undefined", + "sessionkey:", + "user_phone: undefined", + "authorization: Bearer undefined", + "msgtype: CHECK_USER_BE_MSG", + "Host: api.momo.vn", + "User-Agent: okhttp/3.14.17", + "app_version: ".$this->momo_data_config["appVer"], + "app_code: ", + "device_os: ANDROID" + ); + + $Data = array ( + 'user' => $data['phone'], + 'msgType' => 'CHECK_USER_BE_MSG', + 'cmdId' => (string) $microtime. '000000', + 'lang' => 'vi', + 'time' => $microtime, + 'channel' => 'APP', + 'appVer' => $this->momo_data_config["appVer"], + 'appCode' => $this->momo_data_config["appCode"], + 'deviceOS' => 'ANDROID', + 'buildNumber' => 0, + 'appId' => 'vn.momo.platform', + 'result' => true, + 'errorCode' => 0, + 'errorDesc' => '', + 'momoMsg' => + array ( + '_class' => 'mservice.backend.entity.msg.RegDeviceMsg', + 'number' => $data['phone'], + 'imei' => $data["imei"], + 'cname' => 'Vietnam', + 'ccode' => '084', + 'device' => $data["device"], + 'firmware' => '23', + 'hardware' => $data["hardware"], + 'manufacture' => $data["facture"], + 'csp' => 'Viettel', + 'icc' => '', + 'mcc' => '452', + 'device_os' => 'Android', + 'secure_id' => $data["SECUREID"], + ), + 'extra' => + array ( + 'checkSum' => '', + ), + ); + return $this->CURL("CHECK_USER_BE_MSG",$header,$Data); + + } + + public function M2MU_INIT($dataPhone, $dataSend) + { + $microtime = $this->get_microtime(); + $requestkeyRaw = $this->generateRandom(32); + $requestkey = $this->RSA_Encrypt($dataPhone["RSA_PUBLIC_KEY"],$requestkeyRaw); + $header = array( + "agent_id: ".$dataPhone["agent_id"], + "user_phone: ".$dataPhone["phone"], + "sessionkey: ".$dataPhone["sessionkey"], + "authorization: Bearer ".$dataPhone["authorization"], + "msgtype: M2MU_INIT", + "userid: ".$dataPhone["phone"], + "requestkey: ".$requestkey, + "Host: owa.momo.vn" + ); + $ipaddress = $this->get_ip_address(); + $Data = array ( + 'user' => $dataPhone['phone'], + 'msgType' => 'M2MU_INIT', + 'cmdId' => (string) $microtime.'000000', + 'lang' => 'vi', + 'time' => (int) $microtime, + 'channel' => 'APP', + 'appVer' => $this->momo_data_config["appVer"], + 'appCode' => $this->momo_data_config["appCode"], + 'deviceOS' => 'ANDROID', + 'buildNumber' => 0, + 'appId' => 'vn.momo.platform', + 'result' => true, + 'errorCode' => 0, + 'errorDesc' => '', + 'momoMsg' => + array ( + 'clientTime' => (int) $microtime - 221, + 'tranType' => 2018, + 'comment' => $dataSend['comment'], + 'amount' => $dataSend['amount'], + 'partnerId' => $dataSend['receiver'], + 'partnerName' => $dataSend['partnerName'], + 'ref' => '', + 'serviceCode' => 'transfer_p2p', + 'serviceId' => 'transfer_p2p', + '_class' => 'mservice.backend.entity.msg.M2MUInitMsg', + 'tranList' => + array ( + 0 => + array ( + 'partnerName' => $dataSend['partnerName'], + 'partnerId' => $dataSend['receiver'], + 'originalAmount' => $dataSend['amount'], + 'serviceCode' => 'transfer_p2p', + 'stickers' => '', + 'themeBackground' => '#f5fff6', + 'themeUrl' => 'https://cdn.mservice.com.vn/app/img/transfer/theme/Corona_750x260.png', + 'transferSource' => '', + 'socialUserId' => '', + '_class' => 'mservice.backend.entity.msg.M2MUInitMsg', + 'tranType' => 2018, + 'comment' => $dataSend['comment'], + 'moneySource' => 1, + 'partnerCode' => 'momo', + 'serviceMode' => 'transfer_p2p', + 'serviceId' => 'transfer_p2p', + 'extras' => '{"loanId":0,"appSendChat":false,"loanIds":[],"stickers":"","themeUrl":"https://cdn.mservice.com.vn/app/img/transfer/theme/Corona_750x260.png","hidePhone":false,"vpc_CardType":"SML","vpc_TicketNo":"'.$ipaddress.'","vpc_PaymentGateway":""}', + ), + ), + 'extras' => '{"loanId":0,"appSendChat":false,"loanIds":[],"stickers":"","themeUrl":"https://cdn.mservice.com.vn/app/img/transfer/theme/Corona_750x260.png","hidePhone":false,"vpc_CardType":"SML","vpc_TicketNo":"'.$ipaddress.'","vpc_PaymentGateway":""}', + 'moneySource' => 1, + 'partnerCode' => 'momo', + 'rowCardId' => '', + 'giftId' => '', + 'useVoucher' => 0, + 'prepaidIds' => '', + 'usePrepaid' => 0, + ), + 'extra' => + array ( + 'checkSum' => $this->generateCheckSum('M2MU_INIT', $microtime, $dataPhone), + ), + ); + return $this->CURL("M2MU_INIT",$header,$this->Encrypt_data($Data,$requestkeyRaw)); + + } + + public function M2MU_CONFIRM($ID, $data, $dataSend) + { + $microtime = $this->get_microtime(); + $requestkeyRaw = $this->generateRandom(32); + $requestkey = $this->RSA_Encrypt($data["RSA_PUBLIC_KEY"],$requestkeyRaw); + $header = array( + "agent_id: ".$data["agent_id"], + "user_phone: ".$data["phone"], + "sessionkey: ".$data["sessionkey"], + "authorization: Bearer ".$data["authorization"], + "msgtype: M2MU_INIT", + "userid: ".$data["phone"], + "requestkey: ".$requestkey, + "Host: owa.momo.vn" + ); + $ipaddress = $this->get_ip_address(); + $Data = array( + 'user' => $data['phone'], + 'pass' => $data['password'], + 'msgType' => 'M2MU_CONFIRM', + 'cmdId' => (string) $microtime.'000000', + 'lang' => 'vi', + 'time' =>(int) $microtime, + 'channel' => 'APP', + 'appVer' => $this->momo_data_config["appVer"], + 'appCode' => $this->momo_data_config["appCode"], + 'deviceOS' => 'ANDROID', + 'buildNumber' => 0, + 'appId' => 'vn.momo.platform', + 'result' => true, + 'errorCode' => 0, + 'errorDesc' => '', + 'momoMsg' => + array( + 'ids' => + array ( + 0 => $ID, + ), + 'totalAmount' => $dataSend['amount'], + 'originalAmount' => $dataSend['amount'], + 'originalClass' => 'mservice.backend.entity.msg.M2MUConfirmMsg', + 'originalPhone' => $data['phone'], + 'totalFee' => '0.0', + 'id' => $ID, + 'GetUserInfoTaskRequest' => $dataSend['receiver'], + 'tranList' => + array ( + 0 => + array( + '_class' => 'mservice.backend.entity.msg.TranHisMsg', + 'user' => $data['phone'], + 'clientTime' => (int) ($microtime - 211), + 'tranType' => 36, + 'amount' => (int) $dataSend['amount'], + 'receiverType' => 1, + ), + 1 => + array( + '_class' => 'mservice.backend.entity.msg.TranHisMsg', + 'user' => $data['phone'], + 'clientTime' => (int) ($microtime - 211), + 'tranType' => 36, + 'partnerId' => $dataSend['receiver'], + 'amount' => 100, + 'comment' => '', + 'ownerName' => $data['Name'], + 'receiverType' => 0, + 'partnerExtra1' => '{"totalAmount":'.$dataSend['amount'].'}', + 'partnerInvNo' => 'borrow', + ), + ), + 'serviceId' => 'transfer_p2p', + 'serviceCode' => 'transfer_p2p', + 'clientTime' => (int) ($microtime - 211), + 'tranType' => 2018, + 'comment' => '', + 'ref' => '', + 'amount' => $dataSend['amount'], + 'partnerId' => $dataSend['receiver'], + 'bankInId' => '', + 'otp' => '', + 'otpBanknet' => '', + '_class' => 'mservice.backend.entity.msg.M2MUConfirmMsg', + 'extras' => '{"appSendChat":false,"vpc_CardType":"SML","vpc_TicketNo":"'.$ipaddress.'"","vpc_PaymentGateway":""}', + ), + 'extra' => + array( + 'checkSum' => $this-> generateCheckSum('M2MU_CONFIRM',$microtime, $data), + ), + ); + return $this->CURL("M2MU_CONFIRM",$header,$this->Encrypt_data($Data,$requestkeyRaw)); + + } + + private function CURL($Action, $header, $data) + { + $Data = is_array($data) ? json_encode($data) : $data; + $curl = curl_init(); + // echo strlen($Data); die; + $header[] = 'Content-Type: application/json'; + $header[] = 'accept: application/json'; + $header[] = 'Content-Length: ' . strlen($Data); + $opt = array( + CURLOPT_URL => $this->URLAction[$Action], + CURLOPT_RETURNTRANSFER => TRUE, + CURLOPT_POST => empty($data) ? FALSE : TRUE, + CURLOPT_POSTFIELDS => $Data, + CURLOPT_CUSTOMREQUEST => empty($data) ? 'GET' : 'POST', + CURLOPT_HTTPHEADER => $header, + CURLOPT_ENCODING => "", + CURLOPT_HEADER => FALSE, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_TIMEOUT => 20, + ); + curl_setopt_array($curl, $opt); + $body = curl_exec($curl); + // echo strlen($body); die; + if (is_object(json_decode($body))) { + return json_decode($body, true); + } + return json_decode($this->Decrypt_data($body), true); + } + + public function Decrypt_data($data) + { + + $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + return openssl_decrypt(base64_decode($data), 'AES-256-CBC', $this->keys, OPENSSL_RAW_DATA, $iv); + } + + public function generateCheckSum($type, $microtime, $data) + { + $Encrypt = $data["phone"] . $microtime . '000000' . $type . ($microtime / 1000000000000.0) . 'E12'; + $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + return base64_encode(openssl_encrypt($Encrypt, 'AES-256-CBC', $data["setupKeyDecrypt"], OPENSSL_RAW_DATA, $iv)); + } + + private function get_pHash($data) + { + $key = $data["imei"] . "|" . $data["password"]; + $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + return base64_encode(openssl_encrypt($key, 'AES-256-CBC', $data['setupKeyDecrypt'], OPENSSL_RAW_DATA, $iv)); + } + + public function get_setupKey($setUpKey, $data) + { + $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + return openssl_decrypt(base64_decode($setUpKey), 'AES-256-CBC', $data["ohash"], OPENSSL_RAW_DATA, $iv); + } + + public function generateRandom($length = 20) + { + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; + } + private function get_SECUREID($length = 17) + { + $characters = '0123456789abcdef'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; + } + public function get_microtime() + { + return round(microtime(true) * 1000); + } + public function generateImei() + { + return $this->generateRandomString(8) . '-' . $this->generateRandomString(4) . '-' . $this->generateRandomString(4) . '-' . $this->generateRandomString(4) . '-' . $this->generateRandomString(12); + } + private function generateRandomString($length = 20) + { + $characters = '0123456789abcdef'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + return $randomString; + } + public function get_TOKEN() + { + return $this->generateRandom(22) . ':' . $this->generateRandom(9) . '-' . $this->generateRandom(20) . '-' . $this->generateRandom(12) . '-' . $this->generateRandom(7) . '-' . $this->generateRandom(7) . '-' . $this->generateRandom(53) . '-' . $this->generateRandom(9) . '_' . $this->generateRandom(11) . '-' . $this->generateRandom(4); + } + + public function Encrypt_data($data,$key) + { + + $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + $this->keys = $key; + return base64_encode(openssl_encrypt(is_array($data) ? json_encode($data) : $data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv)); + + } + + public function RSA_Encrypt($key,$content) + { + if(empty($this->rsa)){ + $this->INCLUDE_RSA($key); + } + return base64_encode($this->rsa->encrypt($content)); + } + + private function INCLUDE_RSA($key) + { + require_once ('Crypt/RSA.php'); + $this->rsa = new Crypt_RSA(); + $this->rsa->loadKey($key); + $this->rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); + return $this; + } + + private function get_ip_address() + { + $isValid = filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP,FILTER_FLAG_IPV4); + if(!empty($isValid)){ + return $_SERVER['REMOTE_ADDR']; + } + try { + $isIpv4 = json_decode(file_get_contents('https://api.ipify.org?format=json'), true); + return $isIpv4['ip']; + } catch (\Throwable $e){ + return '116.107.187.109'; + } + } +} diff --git a/app/Http/Controllers/dgaAdmin/MomoController.php b/app/Http/Controllers/dgaAdmin/MomoController.php new file mode 100644 index 0000000..c8a439e --- /dev/null +++ b/app/Http/Controllers/dgaAdmin/MomoController.php @@ -0,0 +1,323 @@ +info)->name; + $GetAccountMomo[$i]['balance'] = json_decode($row->info)->balance; + if ($row->status == 1) { + $GetAccountMomo[$i]['status_text'] = 'Hoạt động'; + } else if ($row->status == 2) { + $GetAccountMomo[$i]['status_text'] = 'Ẩn'; + } else if ($row->status == 0) { + $GetAccountMomo[$i]['status_text'] = 'Bảo trì'; + } else if ($row->status == 3) { + $GetAccountMomo[$i]['status_text'] = 'Đang xác thực'; + } + + $i ++; + + } + return view('dgaAdmin.addMomo', compact('setting', 'GetAccountMomo')); + } + + public function getOTP(Request $request) + { + $validator = Validator::make($request->all(), [ + 'phone' => 'required|string|max:11', + 'min' => 'numeric|required', + 'max' => 'numeric|required', + 'password' => 'required|string|min:6', + ]); + if ($validator->fails()) { + return response()->json(array('status' => 'error', 'message' => $validator->errors()->first())); + } + $momo = new MomoApi(); + $data = array( + 'phone' => $request->phone, + 'device' => 'iPhone', + 'hardware' => 'iPhone', + 'facture' => 'Apple', + 'SECUREID' => '', + 'MODELID' => '', + 'imei' => $momo->generateImei(), + 'rkey' => $momo->generateRandom(20), + 'AAID' => '', + 'TOKEN' => $momo->get_TOKEN(), + ); + $result = $momo->SendOTP($data); + if ($result['status'] == "success") { + $momo = Momo::where('phone', $request->phone)->first(); + if (!$momo) { + Momo::create([ + 'phone' => $request->phone, + 'password' => $request->password, + 'info' => json_encode($data), + 'min' => $request->min, + 'max' => $request->max, + 'times' => 0, + 'amount' => 0, + 'status' => 3, + ]); + return response()->json(array('status' => 'success', 'message' => 'Gửi mã OTP về ' . $request->phone . ' thành công')); + } else { + $momo->info = json_encode($data); + $momo->save(); + return response()->json(array('status' => 'success', 'message' => 'Gửi mã OTP về ' . $request->phone . ' thành công')); + } + } + } + + public function verifyMomo(Request $request) + { + $validator = Validator::make($request->all(), [ + 'phone' => 'required|string|max:11', + 'min' => 'numeric|required', + 'max' => 'numeric|required', + 'password' => 'required|string|min:6', + 'otp' => 'required|numeric' + ]); + if ($validator->fails()) { + return response()->json(array('status' => 'error', 'message' => $validator->errors()->first())); + } + $code = $request->otp; + $dataMomo = Momo::where('phone', $request->phone)->first(); + $data_old = json_decode($dataMomo->info, true); + $data = Arr::add($data_old, 'ohash', hash('sha256', $data_old["phone"] . $data_old["rkey"] . $code)); + $momo = new MomoApi(); + $result = $momo->REG_DEVICE_MSG($data); + $data_new = Arr::add($data, 'setupKey', $result["extra"]["setupKey"]); + $data_new = Arr::add($data_new, 'setupKeyDecrypt', $momo->get_setupKey($result["extra"]["setupKey"], $data)); + $dataMomo->info = $data_new; + $dataMomo->save(); + $result = $this->loginMomo($dataMomo->phone); + return back()->withErrors(['status' => 'success', 'message' => 'Thêm tài khoản thành công']); + } + + public function loginMomo($phone) + { + $dataMomo = Momo::where('phone', $phone)->first(); + $data_old = json_decode($dataMomo->info, true); + $data_new = Arr::add($data_old, 'agent_id', ''); + $data_new = Arr::add($data_new, 'sessionkey', ''); + $data_new = Arr::add($data_new, 'authorization', ''); + $data_new = Arr::add($data_new, 'password', $dataMomo->password); + $momo = new MomoApi(); + $result = $momo->USER_LOGIN_MSG($data_new); + if ($result['errorCode']) { + return array( + 'author' => 'DUNGA', + 'status' => 'error', + 'message' => 'Thất bại', + 'data' => array( + 'code' => $result['errorCode'], + 'desc' => $result['errorDesc'] + ) + ); + } else { + $data_new = Arr::set($data_old, 'authorization', $result['extra']['AUTH_TOKEN']); + $data_new = Arr::set($data_new, 'RSA_PUBLIC_KEY', $result['extra']['REQUEST_ENCRYPT_KEY']); + $data_new = Arr::set($data_new, 'sessionkey', $result['extra']['SESSION_KEY']); + $data_new = Arr::set($data_new, 'balance', $result['extra']['BALANCE']); + $data_new = Arr::set($data_new, 'agent_id', $result['momoMsg']['agentId']); + $data_new = Arr::set($data_new, 'BankVerify', $result['momoMsg']['bankVerifyPersonalid']); + $data_new = Arr::set($data_new, 'Name', $result['momoMsg']['name']); + $data_new = Arr::set($data_new, 'password', $dataMomo->password); + $dataMomo->info = $data_new; + $dataMomo->save(); + return array( + 'status' => 'success', + 'message' => 'Đăng nhập thành công' + ); + } + // dd($result); + } + + public function historyMomo($phone) + { + $dataMomo = Momo::where('phone', $phone)->first(); + $data = json_decode($dataMomo->info, true); + $momo = new MomoApi(); + $result = $momo->CheckHisNew(1, $data); + if ($result['status'] != 'error') { + return $result; + } else { + $this->loginMomo($dataMomo->phone); + return $momo->CheckHisNew(1, $data); + } + } + + public function checkMomo($phone, $receiver) + { + $dataMomo = Momo::where('phone', $phone)->first(); + $data = json_decode($dataMomo->info, true); + $momo = new MomoApi(); + $result = $momo->CHECK_USER_PRIVATE($receiver, $data); + if ($result == null) { + return array('status' => 'error', 'message' => 'Tài khoản không tồn tại hoặc chưa đăng ký momo', 'author' => 'DUNGA'); + } else { + return array('status' => 'success', 'message' => 'Thành công', 'author' => 'DUNGA', 'name' => $result['extra']['NAME']); + } + } + + public function sendMoneyMomo($phone, $amount, $comment, $receiver) + { + $dataMomo = Momo::where('phone', $phone)->first(); + $data = json_decode($dataMomo->info, true); + $momo = new MomoApi(); + $dataSend = array( + 'comment' => $comment, + 'amount' => $amount, + 'partnerName' => $this->checkMomo($phone, $receiver)['name'], + 'receiver' => $receiver, + ); + // $data_new = Arr::set($data, 'Name', $this->checkMomo($phone, $phone)['name']); + $result = $momo->M2MU_INIT($data, $dataSend); + if (!empty($result["errorCode"]) && $result["errorDesc"] != "Lỗi cơ sở dữ liệu. Quý khách vui lòng thử lại sau") { + return array( + "status" => "error", + "code" => $result["errorCode"], + "message" => $result["errorDesc"] + ); + } else if (is_null($result)) { + return array( + "status" => "error", + "code" => -5, + "message" => "Đã xảy ra lỗi ở momo hoặc bạn đã hết hạn truy cập vui lòng đăng nhập lại" + ); + } else { + $id = $result["momoMsg"]["replyMsgs"]["0"]["ID"]; + $result = $momo->M2MU_CONFIRM($id, $data, $dataSend); + if (empty($result['errorCode'])) { + $balance = $result["extra"]["BALANCE"]; + $tranHisMsg = $result["momoMsg"]["replyMsgs"]["0"]["tranHisMsg"]; + $data_new = Arr::set($data, 'balance', $balance); + $dataMomo->info = $data_new; + $dataMomo->save(); + return array( + 'status' => 'success', + 'message' => 'Thành công', + 'author' => 'DUNGA', + 'data' => array( + "balance" => $balance, + "ID" => $tranHisMsg["ID"], + "tranId" => $tranHisMsg["tranId"], + "partnerId" => $tranHisMsg["partnerId"], + "partnerName" => $tranHisMsg["partnerName"], + "amount" => $tranHisMsg["amount"], + "comment" => (empty($tranHisMsg["comment"])) ? "" : $tranHisMsg["comment"], + "status" => $tranHisMsg["status"], + "desc" => $tranHisMsg["desc"], + "ownerNumber" => $tranHisMsg["ownerNumber"], + "ownerName" => $tranHisMsg["ownerName"], + "millisecond" => $tranHisMsg["finishTime"] + ) + ); + } else { + return array( + 'status' => 'error', + 'author' => 'DUNGA', + 'data' => array( + "code" => $result["errorCode"], + "message" => $result["errorDesc"], + ) + ); + } + } + } + + public function deleteMomo(Request $request) { + $phone = "0".$request->phone; + $dataMomo = Momo::where('phone', $phone)->first(); + if ($dataMomo) { + $dataMomo->delete(); + return response()->json(array('status' => 'success', 'message' => 'Xóa số momo '.$dataMomo->phone.' thành công')); + } else { + return response()->json(array('status' => 'error', 'message' => 'Số momo không có trong hệ thống')); + } + } + + public function activeMomo(Request $request) { + $phone = "0".$request->phone; + $dataMomo = Momo::where('phone', $phone)->first(); + if ($dataMomo) { + $dataMomo->status = 1; + $dataMomo->save(); + return response()->json(array('status' => 'success', 'message' => 'Chỉnh trạng thái hoạt động số momo '.$dataMomo->phone.' thành công')); + } else { + return response()->json(array('status' => 'error', 'message' => 'Số momo không có trong hệ thống')); + } + } + + public function hideMomo(Request $request) { + $phone = "0".$request->phone; + $dataMomo = Momo::where('phone', $phone)->first(); + if ($dataMomo) { + $dataMomo->status = 2; + $dataMomo->save(); + return response()->json(array('status' => 'success', 'message' => 'Chỉnh trạng thái ẩn số momo '.$dataMomo->phone.' thành công')); + } else { + return response()->json(array('status' => 'error', 'message' => 'Số momo không có trong hệ thống')); + } + } + + public function maintenanceMomo(Request $request) { + $phone = "0".$request->phone; + $dataMomo = Momo::where('phone', $phone)->first(); + if ($dataMomo) { + $dataMomo->status = 0; + $dataMomo->save(); + return response()->json(array('status' => 'success', 'message' => 'Chỉnh trạng thái bảo trì số momo '.$dataMomo->phone.' thành công')); + } else { + return response()->json(array('status' => 'error', 'message' => 'Số momo không có trong hệ thống')); + } + } + + public function infoMomo(Request $request) { + $phone = "0".$request->phone; + $dataMomo = Momo::where('phone', $phone)->first(); + if ($dataMomo) { + return response()->json(array('status' => 'success', 'message' =>'Thành công', 'html' => '
')); + } else { + return response()->json(array('status' => 'error', 'message' => 'Số momo không có trong hệ thống')); + } + } + + public function editMomo(Request $request) { + $dataMomo = Momo::where('id', $request->id)->first(); + if ($dataMomo) { + if ($request->password == null) { + $dataMomo->min = $request->min; + $dataMomo->max = $request->max; + $dataMomo->save(); + return back()->withErrors(['status' => 'success', 'message' => 'Sửa thông tin số momo thành công']); + } else { + $dataMomo->password = $request->password; + $dataMomo->min = $request->min; + $dataMomo->max = $request->max; + $dataMomo->save(); + return back()->withErrors(['status' => 'success', 'message' => 'Sửa thông tin số momo thành công']); + } + } else { + return back()->withErrors(['status' => 'danger', 'message' => 'Số momo không có trong hệ thống']); + + } + } +} diff --git a/app/Http/Resources/HistoryResource.php b/app/Http/Resources/HistoryResource.php new file mode 100644 index 0000000..2fc9aa3 --- /dev/null +++ b/app/Http/Resources/HistoryResource.php @@ -0,0 +1,26 @@ + $this->id, + 'partnerId' => Str::substr($this->partnerId, 0, 4).'****', + 'victory' => $this->status, + 'amount' => $this->amount, + 'comment' => $this->comment, + ]; + } +} diff --git a/app/Http/Resources/MomoResource.php b/app/Http/Resources/MomoResource.php index 63df025..cfe9784 100644 --- a/app/Http/Resources/MomoResource.php +++ b/app/Http/Resources/MomoResource.php @@ -3,6 +3,8 @@ namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; +use App\Models\HistoryPlay; +use Carbon\Carbon; class MomoResource extends JsonResource { @@ -20,7 +22,7 @@ class MomoResource extends JsonResource 'settings' => array( 'transfers_today' => array( 'times' => $this->times, - 'amount' => $this->amount + 'amount' => $this->amount, ) ) ]; diff --git a/app/Models/HistoryDayMission.php b/app/Models/HistoryDayMission.php new file mode 100644 index 0000000..f7e5bc9 --- /dev/null +++ b/app/Models/HistoryDayMission.php @@ -0,0 +1,19 @@ +namespace($this->namespace) ->group(base_path('routes/web.php')); }); + + Route::domain(env('APP_SUBDOMAIN').'.' . env('APP_URL')) + ->middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/admin.php')); } /** diff --git a/config/app.php b/config/app.php index a8d1a82..e52ead4 100644 --- a/config/app.php +++ b/config/app.php @@ -67,7 +67,7 @@ return [ | */ - 'timezone' => 'UTC', + 'timezone' => 'Asia/Ho_Chi_Minh', /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2022_05_01_134738_create_momos_table.php b/database/migrations/2022_05_01_134738_create_momos_table.php index 065bad9..4c6022b 100644 --- a/database/migrations/2022_05_01_134738_create_momos_table.php +++ b/database/migrations/2022_05_01_134738_create_momos_table.php @@ -16,7 +16,7 @@ class CreateMomosTable extends Migration Schema::create('momos', function (Blueprint $table) { $table->id(); $table->string('phone'); - $table->string('token'); + $table->longText('info'); $table->string('password'); $table->string('min'); $table->string('max'); diff --git a/database/migrations/2022_05_02_012840_create_settings_table.php b/database/migrations/2022_05_02_012840_create_settings_table.php new file mode 100644 index 0000000..865e78b --- /dev/null +++ b/database/migrations/2022_05_02_012840_create_settings_table.php @@ -0,0 +1,58 @@ +id(); + $table->string('name'); + $table->string('keywords'); + $table->string('logo'); + $table->string('description'); + $table->string('favicon'); + $table->string('background'); + $table->integer('active'); + $table->integer('history'); + $table->integer('only_win'); + $table->integer('limit'); + $table->integer('day_mission'); + $table->integer('week_top'); + $table->string('ratioCL'); + $table->string('ratioCL2'); + $table->string('ratioTX'); + $table->string('ratioTX2'); + $table->string('ratio1P3'); + $table->string('ratioG3'); + $table->string('ratioH3'); + $table->string('ratioLO'); + $table->string('gift_week')->nullable(); + $table->string('gift_day')->nullable(); + $table->longText('note'); + $table->string('content'); + $table->string('content_day'); + $table->string('content_week'); + $table->longText('ads')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('settings'); + } +} diff --git a/database/migrations/2022_05_02_031023_create_history_plays_table.php b/database/migrations/2022_05_02_031023_create_history_plays_table.php new file mode 100644 index 0000000..69ac7f1 --- /dev/null +++ b/database/migrations/2022_05_02_031023_create_history_plays_table.php @@ -0,0 +1,41 @@ +id(); + $table->string('tranId')->unique(); + $table->string('partnerName'); + $table->string('partnerId'); + $table->string('comment'); + $table->integer('amount'); + $table->integer('receive'); + $table->integer('status'); + $table->integer('pay'); + $table->string('game'); + $table->string('phoneSend'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('history_plays'); + } +} diff --git a/database/migrations/2022_05_10_061858_create_history_day_missions_table.php b/database/migrations/2022_05_10_061858_create_history_day_missions_table.php new file mode 100644 index 0000000..36e7f76 --- /dev/null +++ b/database/migrations/2022_05_10_061858_create_history_day_missions_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('phone'); + $table->integer('amount'); + $table->integer('level'); + $table->integer('receive'); + $table->integer('status'); + $table->integer('pay'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('history_day_missions'); + } +} diff --git a/public/dgaAdmin/assets/css/dashlite.css b/public/dgaAdmin/assets/css/dashlite.css new file mode 100644 index 0000000..ecb0c7c --- /dev/null +++ b/public/dgaAdmin/assets/css/dashlite.css @@ -0,0 +1,10 @@ +@charset "UTF-8"; +/*! +* Template Name: DashLite +* Author: Softnio +* Author URI: http://themeforest.net/user/softnio +* Version: 3.0.2 +* Updated: 04.27.2022 +**/ + +@font-face{font-family:"Roboto";src:url("../fonts/Roboto-Light.eot");src:local("Roboto Light"),local("Roboto-Light"),url("../fonts/Roboto-Light.eot#iefix") format("embedded-opentype"),url("../fonts/Roboto-Light.woff2") format("woff2"),url("../fonts/Roboto-Light.woff") format("woff"),url("../fonts/Roboto-Light.ttf") format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto";src:url("../fonts/Roboto-Regular.eot");src:local("Roboto"),local("Roboto-Regular"),url("../fonts/Roboto-Regular.eot#iefix") format("embedded-opentype"),url("../fonts/Roboto-Regular.woff2") format("woff2"),url("../fonts/Roboto-Regular.woff") format("woff"),url("../fonts/Roboto-Regular.ttf") format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"Roboto";src:url("../fonts/Roboto-Medium.eot");src:local("Roboto Medium"),local("Roboto-Medium"),url("../fonts/Roboto-Medium.eot#iefix") format("embedded-opentype"),url("../fonts/Roboto-Medium.woff2") format("woff2"),url("../fonts/Roboto-Medium.woff") format("woff"),url("../fonts/Roboto-Medium.ttf") format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto";src:url("../fonts/Roboto-Bold.eot");src:local("Roboto Bold"),local("Roboto-Medium"),url("../fonts/Roboto-Bold.eot#iefix") format("embedded-opentype"),url("../fonts/Roboto-Bold.woff2") format("woff2"),url("../fonts/Roboto-Bold.woff") format("woff"),url("../fonts/Roboto-Bold.ttf") format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Nunito";src:url("../fonts/Nunito-Regular.eot");src:local("Nunito Regular"),local("Nunito-Regular"),url("../fonts/Nunito-Regular.eot#iefix") format("embedded-opentype"),url("../fonts/Nunito-Regular.woff2") format("woff2"),url("../fonts/Nunito-Regular.woff") format("woff"),url("../fonts/Nunito-Regular.ttf") format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"Nunito";src:url("../fonts/Nunito-Bold.eot");src:local("Nunito Bold"),local("Nunito-Bold"),url("../fonts/Nunito-Bold.eot#iefix") format("embedded-opentype"),url("../fonts/Nunito-Bold.woff2") format("woff2"),url("../fonts/Nunito-Bold.woff") format("woff"),url("../fonts/Nunito-Bold.ttf") format("truetype");font-weight:bold;font-style:normal}:root{--bs-blue: #559bfb;--bs-indigo: #2c3782;--bs-purple: #816bff;--bs-pink: #ff63a5;--bs-red: #e85347;--bs-orange: #ffa353;--bs-yellow: #f4bd0e;--bs-green: #1ee0ac;--bs-teal: #20c997;--bs-cyan: #09c2de;--bs-white: #fff;--bs-gray: #8091a7;--bs-gray-dark: #2b3748;--bs-gray-100: #ebeef2;--bs-gray-200: #e5e9f2;--bs-gray-300: #dbdfea;--bs-gray-400: #b7c2d0;--bs-gray-500: #8091a7;--bs-gray-600: #3c4d62;--bs-gray-700: #344357;--bs-gray-800: #2b3748;--bs-gray-900: #1f2b3a;--bs-primary: #0fac81;--bs-secondary: #364a63;--bs-success: #1ee0ac;--bs-info: #09c2de;--bs-warning: #f4bd0e;--bs-danger: #e85347;--bs-light: #e5e9f2;--bs-dark: #1f2b3a;--bs-gray: #8091a7;--bs-lighter: #f5f6fa;--bs-primary-rgb: 15, 172, 129;--bs-secondary-rgb: 54, 74, 99;--bs-success-rgb: 30, 224, 172;--bs-info-rgb: 9, 194, 222;--bs-warning-rgb: 244, 189, 14;--bs-danger-rgb: 232, 83, 71;--bs-light-rgb: 229, 233, 242;--bs-dark-rgb: 31, 43, 58;--bs-gray-rgb: 128, 145, 167;--bs-lighter-rgb: 245, 246, 250;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 82, 100, 132;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: Roboto, sans-serif;--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: Roboto, sans-serif;--bs-body-font-size: 0.875rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.65;--bs-body-color: #526484;--bs-body-bg: #fff}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:#b7c2d0;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-family:Nunito,sans-serif;font-weight:700;line-height:1.1;color:#364a63}h1,.h1{font-size:2rem}h2,.h2{font-size:1.75rem}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.15rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#3fbd9a;text-decoration:none}a:hover{color:#32977b;text-decoration:none}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#ff63a5;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:3px}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#8094ae;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.00625rem;font-weight:400}.display-1{font-size:5rem;font-weight:300;line-height:1.1}.display-2{font-size:4.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}.display-5{font-size:3rem;font-weight:300;line-height:1.1}.display-6{font-size:2.5rem;font-weight:300;line-height:1.1}.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:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.09375rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:85%;color:#b6c6e3}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:4px;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:var(--bs-gutter-x, 14px);padding-left:var(--bs-gutter-x, 14px);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1540px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1440px}}.row{--bs-gutter-x: 28px;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.375rem}.g-1,.gy-1{--bs-gutter-y: 0.375rem}.g-2,.gx-2{--bs-gutter-x: 0.75rem}.g-2,.gy-2{--bs-gutter-y: 0.75rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 2.75rem}.g-5,.gy-5{--bs-gutter-y: 2.75rem}.g-gs,.gx-gs{--bs-gutter-x: 28px}.g-gs,.gy-gs{--bs-gutter-y: 28px}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.375rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.375rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.75rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.75rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 2.75rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 2.75rem}.g-sm-gs,.gx-sm-gs{--bs-gutter-x: 28px}.g-sm-gs,.gy-sm-gs{--bs-gutter-y: 28px}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.375rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.375rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.75rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.75rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 2.75rem}.g-md-5,.gy-md-5{--bs-gutter-y: 2.75rem}.g-md-gs,.gx-md-gs{--bs-gutter-x: 28px}.g-md-gs,.gy-md-gs{--bs-gutter-y: 28px}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.375rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.375rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.75rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.75rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 2.75rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 2.75rem}.g-lg-gs,.gx-lg-gs{--bs-gutter-x: 28px}.g-lg-gs,.gy-lg-gs{--bs-gutter-y: 28px}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.375rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.375rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.75rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.75rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 2.75rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 2.75rem}.g-xl-gs,.gx-xl-gs{--bs-gutter-x: 28px}.g-xl-gs,.gy-xl-gs{--bs-gutter-y: 28px}}@media(min-width: 1540px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.375rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.375rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.75rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.75rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 2.75rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 2.75rem}.g-xxl-gs,.gx-xxl-gs{--bs-gutter-x: 28px}.g-xxl-gs,.gy-xxl-gs{--bs-gutter-y: 28px}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: #fff;--bs-table-striped-color: #526484;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #526484;--bs-table-active-bg: #f5f6fa;--bs-table-hover-color: #526484;--bs-table-hover-bg: #f5f6fa;width:100%;margin-bottom:1rem;color:#526484;vertical-align:top;border-color:#dbdfea}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem 1.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #ddebfe;--bs-table-striped-bg: #d2dff1;--bs-table-striped-color: #000;--bs-table-active-bg: #c7d4e5;--bs-table-active-color: #000;--bs-table-hover-bg: #ccd9eb;--bs-table-hover-color: #000;color:#000;border-color:#c7d4e5}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg: #d2f9ee;--bs-table-striped-bg: #c8ede2;--bs-table-striped-color: #000;--bs-table-active-bg: #bde0d6;--bs-table-active-color: #000;--bs-table-hover-bg: #c2e6dc;--bs-table-hover-color: #000;color:#000;border-color:#bde0d6}.table-info{--bs-table-bg: #cef3f8;--bs-table-striped-bg: #c4e7ec;--bs-table-striped-color: #000;--bs-table-active-bg: #b9dbdf;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe1e5;--bs-table-hover-color: #000;color:#000;border-color:#b9dbdf}.table-warning{--bs-table-bg: #fdf2cf;--bs-table-striped-bg: #f0e6c5;--bs-table-striped-color: #000;--bs-table-active-bg: #e4daba;--bs-table-active-color: #000;--bs-table-hover-bg: #eae0bf;--bs-table-hover-color: #000;color:#000;border-color:#e4daba}.table-danger{--bs-table-bg: #faddda;--bs-table-striped-bg: #eed2cf;--bs-table-striped-color: #000;--bs-table-active-bg: #e1c7c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e7ccca;--bs-table-hover-color: #000;color:#000;border-color:#e1c7c4}.table-light{--bs-table-bg: #ebeef2;--bs-table-striped-bg: #dfe2e6;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d6da;--bs-table-active-color: #000;--bs-table-hover-bg: #d9dce0;--bs-table-hover-color: #000;color:#000;border-color:#d4d6da}.table-dark{--bs-table-bg: #1f2b3a;--bs-table-striped-bg: #2a3644;--bs-table-striped-color: #fff;--bs-table-active-bg: #35404e;--bs-table-active-color: #fff;--bs-table-hover-bg: #303b49;--bs-table-hover-color: #fff;color:#fff;border-color:#35404e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1539.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.4375rem + 1px);padding-bottom:calc(0.4375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.25rem}.col-form-label-lg{padding-top:calc(0.6875rem + 1px);padding-bottom:calc(0.6875rem + 1px);font-size:0.9375rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.75rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#6c757d}.form-control,.dual-listbox .dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input{display:block;width:100%;padding:.4375rem 1rem;font-size:0.8125rem;font-weight:400;line-height:1.25rem;color:#3c4d62;background-color:#fff;background-clip:padding-box;border:1px solid #dbdfea;appearance:none;border-radius:4px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control,.dual-listbox .dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input{transition:none}}.form-control[type=file],.dual-listbox [type=file].dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]),.dual-listbox [type=file].dual-listbox__search:not(:disabled):not([readonly]),div.dataTables_wrapper div.dataTables_filter input[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus,.dual-listbox .dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter input:focus{color:#3c4d62;background-color:#fff;border-color:#0fac81;outline:0;box-shadow:0 0 0 3px rgba(15,172,129,.1)}.form-control::-webkit-date-and-time-value,.dual-listbox .dual-listbox__search::-webkit-date-and-time-value,div.dataTables_wrapper div.dataTables_filter input::-webkit-date-and-time-value{height:1.25rem}.form-control::placeholder,.dual-listbox .dual-listbox__search::placeholder,div.dataTables_wrapper div.dataTables_filter input::placeholder{color:#b6c6e3;opacity:1}.form-control:disabled,.dual-listbox .dual-listbox__search:disabled,div.dataTables_wrapper div.dataTables_filter input:disabled,.form-control[readonly],.dual-listbox [readonly].dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input[readonly]{background-color:#f5f6fa;opacity:1}.form-control::file-selector-button,.dual-listbox .dual-listbox__search::file-selector-button,div.dataTables_wrapper div.dataTables_filter input::file-selector-button{padding:.4375rem 1rem;margin:-0.4375rem -1rem;margin-inline-end:1rem;color:#3c4d62;background-color:#ebeef2;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button,.dual-listbox .dual-listbox__search::file-selector-button,div.dataTables_wrapper div.dataTables_filter input::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button,.dual-listbox .dual-listbox__search:hover:not(:disabled):not([readonly])::file-selector-button,div.dataTables_wrapper div.dataTables_filter input:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button,.dual-listbox .dual-listbox__search::-webkit-file-upload-button,div.dataTables_wrapper div.dataTables_filter input::-webkit-file-upload-button{padding:.4375rem 1rem;margin:-0.4375rem -1rem;margin-inline-end:1rem;color:#3c4d62;background-color:#ebeef2;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button,.dual-listbox .dual-listbox__search::-webkit-file-upload-button,div.dataTables_wrapper div.dataTables_filter input::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,.dual-listbox .dual-listbox__search:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,div.dataTables_wrapper div.dataTables_filter input:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.4375rem 0;margin-bottom:0;line-height:1.25rem;color:#364a63;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.75rem + 2px);padding:.25rem 1rem;font-size:0.75rem;border-radius:3px}.form-control-sm::file-selector-button{padding:.25rem 1rem;margin:-0.25rem -1rem;margin-inline-end:1rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem 1rem;margin:-0.25rem -1rem;margin-inline-end:1rem}.form-control-lg{min-height:calc(2.625rem + 2px);padding:.6875rem 1rem;font-size:0.9375rem;border-radius:5px}.form-control-lg::file-selector-button{padding:.6875rem 1rem;margin:-0.6875rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.6875rem 1rem;margin:-0.6875rem -1rem;margin-inline-end:1rem}textarea.form-control,.dual-listbox textarea.dual-listbox__search{min-height:calc(2.125rem + 2px)}textarea.form-control-sm{min-height:calc(1.75rem + 2px)}textarea.form-control-lg{min-height:calc(2.625rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.4375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.25rem;border-radius:4px}.form-control-color::-webkit-color-swatch{height:1.25rem;border-radius:4px}.form-select{display:block;width:100%;padding:.4375rem 3rem .4375rem 1rem;-moz-padding-start:calc(1rem - 3px);font-size:0.8125rem;font-weight:400;line-height:1.25rem;color:#3c4d62;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem center;background-size:16px 12px;border:1px solid #dbdfea;border-radius:4px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#0fac81;outline:0;box-shadow:0 0 0 .2rem rgba(85,155,251,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:1rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #3c4d62}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;font-size:0.75rem;border-radius:3px}.form-select-lg{padding-top:.6875rem;padding-bottom:.6875rem;padding-left:1rem;font-size:0.9375rem;border-radius:5px}.form-check{display:block;min-height:1.44375rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.325em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#0fac81;outline:0;box-shadow:0 0 0 .25rem rgba(85,155,251,.25)}.form-check-input:checked{background-color:#0fac81;border-color:#559bfb}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#559bfb;border-color:#559bfb;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%230fac81'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.dual-listbox .btn-check[disabled]+.dual-listbox__button,.btn-check:disabled+.btn,.dual-listbox .btn-check:disabled+.dual-listbox__button{pointer-events:none;filter:none;opacity:.5}.form-range{width:100%;height:1.4rem;padding:0;background-color:rgba(0,0,0,0);appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(15,172,129,.1)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(15,172,129,.1)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#559bfb;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#cce1fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dbdfea;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#559bfb;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#cce1fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dbdfea;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.dual-listbox .form-floating>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .form-floating>input,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem 1rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.dual-listbox .form-floating>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .form-floating>input{padding:1rem 1rem}.form-floating>.form-control::placeholder,.dual-listbox .form-floating>.dual-listbox__search::placeholder,div.dataTables_wrapper div.dataTables_filter .form-floating>input::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.dual-listbox .form-floating>.dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter .form-floating>input:focus,.form-floating>.form-control:not(:placeholder-shown),.dual-listbox .form-floating>.dual-listbox__search:not(:placeholder-shown),div.dataTables_wrapper div.dataTables_filter .form-floating>input:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.dual-listbox .form-floating>.dual-listbox__search:-webkit-autofill,div.dataTables_wrapper div.dataTables_filter .form-floating>input:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.dual-listbox .form-floating>.dual-listbox__search:focus~label,div.dataTables_wrapper div.dataTables_filter .form-floating>input:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.dual-listbox .form-floating>.dual-listbox__search:not(:placeholder-shown)~label,div.dataTables_wrapper div.dataTables_filter .form-floating>input:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label,.dual-listbox .form-floating>.dual-listbox__search:-webkit-autofill~label,div.dataTables_wrapper div.dataTables_filter .form-floating>input:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.dual-listbox .input-group>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>input,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.dual-listbox .input-group>.dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter .input-group>input:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn,.input-group .dual-listbox .dual-listbox__button,.dual-listbox .input-group .dual-listbox__button{position:relative;z-index:2}.input-group .btn:focus,.input-group .dual-listbox .dual-listbox__button:focus,.dual-listbox .input-group .dual-listbox__button:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.4375rem 1rem;font-size:0.8125rem;font-weight:400;line-height:1.25rem;color:#3c4d62;text-align:center;white-space:nowrap;background-color:#ebeef2;border:1px solid #dbdfea;border-radius:4px}.input-group-lg>.form-control,.dual-listbox .input-group-lg>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group-lg>input,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn,.dual-listbox .input-group-lg>.dual-listbox__button{padding:.6875rem 1rem;font-size:0.9375rem;border-radius:5px}.input-group-sm>.form-control,.dual-listbox .input-group-sm>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group-sm>input,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn,.dual-listbox .input-group-sm>.dual-listbox__button{padding:.25rem 1rem;font-size:0.75rem;border-radius:3px}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:4rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#1ee0ac}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .75rem;margin-top:.1rem;font-size:0.8125rem;color:#fff;background-color:rgba(30,224,172,.9);border-radius:3px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.was-validated .dual-listbox .dual-listbox__search:valid,.dual-listbox .was-validated .dual-listbox__search:valid,.was-validated div.dataTables_wrapper div.dataTables_filter input:valid,div.dataTables_wrapper div.dataTables_filter .was-validated input:valid,.form-control.is-valid,.dual-listbox .is-valid.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input.is-valid{border-color:#1ee0ac;padding-right:2.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231ee0ac' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .53125rem center;background-size:1.0625rem 1.0625rem}.was-validated .form-control:valid:focus,.was-validated .dual-listbox .dual-listbox__search:valid:focus,.dual-listbox .was-validated .dual-listbox__search:valid:focus,.was-validated div.dataTables_wrapper div.dataTables_filter input:valid:focus,div.dataTables_wrapper div.dataTables_filter .was-validated input:valid:focus,.form-control.is-valid:focus,.dual-listbox .is-valid.dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter input.is-valid:focus{border-color:#1ee0ac;box-shadow:0 0 0 .2rem rgba(30,224,172,.25)}.was-validated textarea.form-control:valid,.was-validated .dual-listbox textarea.dual-listbox__search:valid,.dual-listbox .was-validated textarea.dual-listbox__search:valid,textarea.form-control.is-valid,.dual-listbox textarea.is-valid.dual-listbox__search{padding-right:2.125rem;background-position:top .53125rem right .53125rem}.was-validated .form-select:valid,.form-select.is-valid{border-color:#1ee0ac}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:5.5rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231ee0ac' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.0625rem 1.0625rem}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#1ee0ac;box-shadow:0 0 0 .2rem rgba(30,224,172,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#1ee0ac}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#1ee0ac}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .2rem rgba(30,224,172,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#1ee0ac}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.was-validated .input-group .dual-listbox .dual-listbox__search:valid,.dual-listbox .was-validated .input-group .dual-listbox__search:valid,.was-validated .input-group div.dataTables_wrapper div.dataTables_filter input:valid,div.dataTables_wrapper div.dataTables_filter .was-validated .input-group input:valid,.input-group .form-control.is-valid,.input-group .dual-listbox .is-valid.dual-listbox__search,.dual-listbox .input-group .is-valid.dual-listbox__search,.input-group div.dataTables_wrapper div.dataTables_filter input.is-valid,div.dataTables_wrapper div.dataTables_filter .input-group input.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .dual-listbox .dual-listbox__search:valid:focus,.dual-listbox .was-validated .input-group .dual-listbox__search:valid:focus,.was-validated .input-group div.dataTables_wrapper div.dataTables_filter input:valid:focus,div.dataTables_wrapper div.dataTables_filter .was-validated .input-group input:valid:focus,.input-group .form-control.is-valid:focus,.input-group .dual-listbox .is-valid.dual-listbox__search:focus,.dual-listbox .input-group .is-valid.dual-listbox__search:focus,.input-group div.dataTables_wrapper div.dataTables_filter input.is-valid:focus,div.dataTables_wrapper div.dataTables_filter .input-group input.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e85347}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .75rem;margin-top:.1rem;font-size:0.8125rem;color:#fff;background-color:rgba(232,83,71,.9);border-radius:3px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.was-validated .dual-listbox .dual-listbox__search:invalid,.dual-listbox .was-validated .dual-listbox__search:invalid,.was-validated div.dataTables_wrapper div.dataTables_filter input:invalid,div.dataTables_wrapper div.dataTables_filter .was-validated input:invalid,.form-control.is-invalid,.dual-listbox .is-invalid.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input.is-invalid{border-color:#e85347;padding-right:2.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e85347'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e85347' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .53125rem center;background-size:1.0625rem 1.0625rem}.was-validated .form-control:invalid:focus,.was-validated .dual-listbox .dual-listbox__search:invalid:focus,.dual-listbox .was-validated .dual-listbox__search:invalid:focus,.was-validated div.dataTables_wrapper div.dataTables_filter input:invalid:focus,div.dataTables_wrapper div.dataTables_filter .was-validated input:invalid:focus,.form-control.is-invalid:focus,.dual-listbox .is-invalid.dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter input.is-invalid:focus{border-color:#e85347;box-shadow:0 0 0 .2rem rgba(232,83,71,.25)}.was-validated textarea.form-control:invalid,.was-validated .dual-listbox textarea.dual-listbox__search:invalid,.dual-listbox .was-validated textarea.dual-listbox__search:invalid,textarea.form-control.is-invalid,.dual-listbox textarea.is-invalid.dual-listbox__search{padding-right:2.125rem;background-position:top .53125rem right .53125rem}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e85347}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:5.5rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e85347'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e85347' stroke='none'/%3e%3c/svg%3e");background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.0625rem 1.0625rem}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e85347;box-shadow:0 0 0 .2rem rgba(232,83,71,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e85347}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e85347}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .2rem rgba(232,83,71,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e85347}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.was-validated .input-group .dual-listbox .dual-listbox__search:invalid,.dual-listbox .was-validated .input-group .dual-listbox__search:invalid,.was-validated .input-group div.dataTables_wrapper div.dataTables_filter input:invalid,div.dataTables_wrapper div.dataTables_filter .was-validated .input-group input:invalid,.input-group .form-control.is-invalid,.input-group .dual-listbox .is-invalid.dual-listbox__search,.dual-listbox .input-group .is-invalid.dual-listbox__search,.input-group div.dataTables_wrapper div.dataTables_filter input.is-invalid,div.dataTables_wrapper div.dataTables_filter .input-group input.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .dual-listbox .dual-listbox__search:invalid:focus,.dual-listbox .was-validated .input-group .dual-listbox__search:invalid:focus,.was-validated .input-group div.dataTables_wrapper div.dataTables_filter input:invalid:focus,div.dataTables_wrapper div.dataTables_filter .was-validated .input-group input:invalid:focus,.input-group .form-control.is-invalid:focus,.input-group .dual-listbox .is-invalid.dual-listbox__search:focus,.dual-listbox .input-group .is-invalid.dual-listbox__search:focus,.input-group div.dataTables_wrapper div.dataTables_filter input.is-invalid:focus,div.dataTables_wrapper div.dataTables_filter .input-group input.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn,.dual-listbox .dual-listbox__button{display:inline-block;font-family:Nunito,sans-serif;font-weight:700;line-height:1.25rem;color:#526484;text-align:center;vertical-align:middle;cursor:pointer;user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.4375rem 1.125rem;font-size:0.8125rem;border-radius:4px;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn,.dual-listbox .dual-listbox__button{transition:none}}.btn:hover,.dual-listbox .dual-listbox__button:hover{color:#526484}.btn-check:focus+.btn,.dual-listbox .btn-check:focus+.dual-listbox__button,.btn:focus,.dual-listbox .dual-listbox__button:focus{outline:0;box-shadow:0 0 0 3px rgba(15,172,129,.1)}.btn:disabled,.dual-listbox .dual-listbox__button:disabled,.btn.disabled,.dual-listbox .disabled.dual-listbox__button,fieldset:disabled .btn,fieldset:disabled .dual-listbox .dual-listbox__button,.dual-listbox fieldset:disabled .dual-listbox__button{pointer-events:none;opacity:.5}.btn-primary{color:#fff;background-color:#0fac81;border-color:#0fac81}.btn-primary:hover{color:#fff;background-color:#0d926e;border-color:#0c8a67}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0d926e;border-color:#0c8a67;box-shadow:0 0 0 .2rem rgba(51,184,148,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0c8a67;border-color:#0b8161}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(51,184,148,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#0fac81;border-color:#0fac81}.btn-secondary{color:#fff;background-color:#364a63;border-color:#364a63}.btn-secondary:hover{color:#fff;background-color:#2e3f54;border-color:#2b3b4f}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#2e3f54;border-color:#2b3b4f;box-shadow:0 0 0 .2rem rgba(84,101,122,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#2b3b4f;border-color:#29384a}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(84,101,122,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#364a63;border-color:#364a63}.btn-success{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.btn-success:hover{color:#fff;background-color:#1abe92;border-color:#18b38a}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#1abe92;border-color:#18b38a;box-shadow:0 0 0 .2rem rgba(64,229,184,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#18b38a;border-color:#17a881}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(64,229,184,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.btn-info{color:#fff;background-color:#09c2de;border-color:#09c2de}.btn-info:hover{color:#fff;background-color:#08a5bd;border-color:#079bb2}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#08a5bd;border-color:#079bb2;box-shadow:0 0 0 .2rem rgba(46,203,227,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#079bb2;border-color:#0792a7}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(46,203,227,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#09c2de;border-color:#09c2de}.btn-warning{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.btn-warning:hover{color:#fff;background-color:#cfa10c;border-color:#c3970b}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#cfa10c;border-color:#c3970b;box-shadow:0 0 0 .2rem rgba(246,199,50,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#c3970b;border-color:#b78e0b}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(246,199,50,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.btn-danger{color:#fff;background-color:#e85347;border-color:#e85347}.btn-danger:hover{color:#fff;background-color:#c5473c;border-color:#ba4239}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#c5473c;border-color:#ba4239;box-shadow:0 0 0 .2rem rgba(235,109,99,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#ba4239;border-color:#ae3e35}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(235,109,99,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#e85347;border-color:#e85347}.btn-light,.dual-listbox .dual-listbox__button{color:#000;background-color:#e5e9f2;border-color:#e5e9f2}.btn-light:hover,.dual-listbox .dual-listbox__button:hover{color:#000;background-color:#e9ecf4;border-color:#e8ebf3}.btn-check:focus+.btn-light,.dual-listbox .btn-check:focus+.dual-listbox__button,.btn-light:focus,.dual-listbox .dual-listbox__button:focus{color:#000;background-color:#e9ecf4;border-color:#e8ebf3;box-shadow:0 0 0 .2rem rgba(195,198,206,.5)}.btn-check:checked+.btn-light,.dual-listbox .btn-check:checked+.dual-listbox__button,.btn-check:active+.btn-light,.dual-listbox .btn-check:active+.dual-listbox__button,.btn-light:active,.dual-listbox .dual-listbox__button:active,.btn-light.active,.dual-listbox .active.dual-listbox__button,.show>.btn-light.dropdown-toggle,.dual-listbox .show>.dropdown-toggle.dual-listbox__button{color:#000;background-color:#eaedf5;border-color:#e8ebf3}.btn-check:checked+.btn-light:focus,.dual-listbox .btn-check:checked+.dual-listbox__button:focus,.btn-check:active+.btn-light:focus,.dual-listbox .btn-check:active+.dual-listbox__button:focus,.btn-light:active:focus,.dual-listbox .dual-listbox__button:active:focus,.btn-light.active:focus,.dual-listbox .active.dual-listbox__button:focus,.show>.btn-light.dropdown-toggle:focus,.dual-listbox .show>.dropdown-toggle.dual-listbox__button:focus{box-shadow:0 0 0 .2rem rgba(195,198,206,.5)}.btn-light:disabled,.dual-listbox .dual-listbox__button:disabled,.btn-light.disabled,.dual-listbox .disabled.dual-listbox__button{color:#000;background-color:#e5e9f2;border-color:#e5e9f2}.btn-dark{color:#fff;background-color:#1f2b3a;border-color:#1f2b3a}.btn-dark:hover{color:#fff;background-color:#1a2531;border-color:#19222e}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1a2531;border-color:#19222e;box-shadow:0 0 0 .2rem rgba(65,75,88,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#19222e;border-color:#17202c}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(65,75,88,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#1f2b3a;border-color:#1f2b3a}.btn-gray{color:#fff;background-color:#8091a7;border-color:#8091a7}.btn-gray:hover{color:#fff;background-color:#6d7b8e;border-color:#667486}.btn-check:focus+.btn-gray,.btn-gray:focus{color:#fff;background-color:#6d7b8e;border-color:#667486;box-shadow:0 0 0 .2rem rgba(147,162,180,.5)}.btn-check:checked+.btn-gray,.btn-check:active+.btn-gray,.btn-gray:active,.btn-gray.active,.show>.btn-gray.dropdown-toggle{color:#fff;background-color:#667486;border-color:#606d7d}.btn-check:checked+.btn-gray:focus,.btn-check:active+.btn-gray:focus,.btn-gray:active:focus,.btn-gray.active:focus,.show>.btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(147,162,180,.5)}.btn-gray:disabled,.btn-gray.disabled{color:#fff;background-color:#8091a7;border-color:#8091a7}.btn-lighter{color:#000;background-color:#f5f6fa;border-color:#f5f6fa}.btn-lighter:hover{color:#000;background-color:#f7f7fb;border-color:#f6f7fb}.btn-check:focus+.btn-lighter,.btn-lighter:focus{color:#000;background-color:#f7f7fb;border-color:#f6f7fb;box-shadow:0 0 0 .2rem rgba(208,209,213,.5)}.btn-check:checked+.btn-lighter,.btn-check:active+.btn-lighter,.btn-lighter:active,.btn-lighter.active,.show>.btn-lighter.dropdown-toggle{color:#000;background-color:#f7f8fb;border-color:#f6f7fb}.btn-check:checked+.btn-lighter:focus,.btn-check:active+.btn-lighter:focus,.btn-lighter:active:focus,.btn-lighter.active:focus,.show>.btn-lighter.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(208,209,213,.5)}.btn-lighter:disabled,.btn-lighter.disabled{color:#000;background-color:#f5f6fa;border-color:#f5f6fa}.btn-outline-primary{color:#0fac81;border-color:#0fac81}.btn-outline-primary:hover{color:#fff;background-color:#0fac81;border-color:#0fac81}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(15,172,129,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#0fac81;border-color:#0fac81}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(15,172,129,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#0fac81;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#364a63;border-color:#364a63}.btn-outline-secondary:hover{color:#fff;background-color:#364a63;border-color:#364a63}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(54,74,99,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#364a63;border-color:#364a63}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(54,74,99,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#364a63;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#1ee0ac;border-color:#1ee0ac}.btn-outline-success:hover{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(30,224,172,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(30,224,172,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#1ee0ac;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#09c2de;border-color:#09c2de}.btn-outline-info:hover{color:#fff;background-color:#09c2de;border-color:#09c2de}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(9,194,222,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#09c2de;border-color:#09c2de}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(9,194,222,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#09c2de;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#f4bd0e;border-color:#f4bd0e}.btn-outline-warning:hover{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(244,189,14,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(244,189,14,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#f4bd0e;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#e85347;border-color:#e85347}.btn-outline-danger:hover{color:#fff;background-color:#e85347;border-color:#e85347}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(232,83,71,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#e85347;border-color:#e85347}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(232,83,71,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#e85347;background-color:rgba(0,0,0,0)}.btn-outline-light,.dt-buttons .btn-secondary{color:#e5e9f2;border-color:#e5e9f2}.btn-outline-light:hover,.dt-buttons .btn-secondary:hover{color:#000;background-color:#e5e9f2;border-color:#e5e9f2}.btn-check:focus+.btn-outline-light,.dt-buttons .btn-check:focus+.btn-secondary,.btn-outline-light:focus,.dt-buttons .btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(229,233,242,.5)}.btn-check:checked+.btn-outline-light,.dt-buttons .btn-check:checked+.btn-secondary,.btn-check:active+.btn-outline-light,.dt-buttons .btn-check:active+.btn-secondary,.btn-outline-light:active,.dt-buttons .btn-secondary:active,.btn-outline-light.active,.dt-buttons .active.btn-secondary,.btn-outline-light.dropdown-toggle.show,.dt-buttons .dropdown-toggle.show.btn-secondary{color:#000;background-color:#e5e9f2;border-color:#e5e9f2}.btn-check:checked+.btn-outline-light:focus,.dt-buttons .btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-outline-light:focus,.dt-buttons .btn-check:active+.btn-secondary:focus,.btn-outline-light:active:focus,.dt-buttons .btn-secondary:active:focus,.btn-outline-light.active:focus,.dt-buttons .active.btn-secondary:focus,.btn-outline-light.dropdown-toggle.show:focus,.dt-buttons .dropdown-toggle.show.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(229,233,242,.5)}.btn-outline-light:disabled,.dt-buttons .btn-secondary:disabled,.btn-outline-light.disabled,.dt-buttons .disabled.btn-secondary{color:#e5e9f2;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#1f2b3a;border-color:#1f2b3a}.btn-outline-dark:hover{color:#fff;background-color:#1f2b3a;border-color:#1f2b3a}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(31,43,58,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#1f2b3a;border-color:#1f2b3a}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(31,43,58,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#1f2b3a;background-color:rgba(0,0,0,0)}.btn-outline-gray{color:#8091a7;border-color:#8091a7}.btn-outline-gray:hover{color:#fff;background-color:#8091a7;border-color:#8091a7}.btn-check:focus+.btn-outline-gray,.btn-outline-gray:focus{box-shadow:0 0 0 .2rem rgba(128,145,167,.5)}.btn-check:checked+.btn-outline-gray,.btn-check:active+.btn-outline-gray,.btn-outline-gray:active,.btn-outline-gray.active,.btn-outline-gray.dropdown-toggle.show{color:#fff;background-color:#8091a7;border-color:#8091a7}.btn-check:checked+.btn-outline-gray:focus,.btn-check:active+.btn-outline-gray:focus,.btn-outline-gray:active:focus,.btn-outline-gray.active:focus,.btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(128,145,167,.5)}.btn-outline-gray:disabled,.btn-outline-gray.disabled{color:#8091a7;background-color:rgba(0,0,0,0)}.btn-outline-lighter{color:#f5f6fa;border-color:#f5f6fa}.btn-outline-lighter:hover{color:#000;background-color:#f5f6fa;border-color:#f5f6fa}.btn-check:focus+.btn-outline-lighter,.btn-outline-lighter:focus{box-shadow:0 0 0 .2rem rgba(245,246,250,.5)}.btn-check:checked+.btn-outline-lighter,.btn-check:active+.btn-outline-lighter,.btn-outline-lighter:active,.btn-outline-lighter.active,.btn-outline-lighter.dropdown-toggle.show{color:#000;background-color:#f5f6fa;border-color:#f5f6fa}.btn-check:checked+.btn-outline-lighter:focus,.btn-check:active+.btn-outline-lighter:focus,.btn-outline-lighter:active:focus,.btn-outline-lighter.active:focus,.btn-outline-lighter.dropdown-toggle.show:focus{box-shadow:0 0 0 .2rem rgba(245,246,250,.5)}.btn-outline-lighter:disabled,.btn-outline-lighter.disabled{color:#f5f6fa;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#3fbd9a;text-decoration:none}.btn-link:hover{color:#32977b;text-decoration:none}.btn-link:focus{text-decoration:none}.btn-link:disabled,.btn-link.disabled{color:#f5f6fa}.btn-lg,.btn-group-lg>.btn,.dual-listbox .btn-group-lg>.dual-listbox__button{padding:.6875rem 1.5rem;font-size:0.9375rem;border-radius:5px}.btn-sm,.btn-group-sm>.btn,.dual-listbox .btn-group-sm>.dual-listbox__button{padding:.25rem .75rem;font-size:0.75rem;border-radius:3px}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:180px;padding:0 0;margin:0;font-size:0.8125rem;color:#526484;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #e5e9f2;border-radius:4px}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1540px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:12px 0;overflow:hidden;border-top:1px solid #e5e9f2}.dropdown-item{display:block;width:100%;padding:8px 14px;clear:both;font-weight:400;color:#364a63;text-align:inherit;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:first-child{border-top-left-radius:calc(4px - 1px);border-top-right-radius:calc(4px - 1px)}.dropdown-item:last-child{border-bottom-right-radius:calc(4px - 1px);border-bottom-left-radius:calc(4px - 1px)}.dropdown-item:hover,.dropdown-item:focus{color:#0fac81;background-color:#ebeef2}.dropdown-item.active,.dropdown-item:active{color:#0fac81;text-decoration:none;background-color:#dbdfea}.dropdown-item.disabled,.dropdown-item:disabled{color:#ebeef2;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0 14px;margin-bottom:0;font-size:0.75rem;color:#8091a7;white-space:nowrap}.dropdown-item-text{display:block;padding:8px 14px;color:#364a63}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#e5e9f2}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#0fac81;background-color:#dbdfea}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#e5e9f2}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.dual-listbox .btn-group>.dual-listbox__button,.btn-group-vertical>.btn,.dual-listbox .btn-group-vertical>.dual-listbox__button{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.dual-listbox .btn-group>.btn-check:checked+.dual-listbox__button,.btn-group>.btn-check:focus+.btn,.dual-listbox .btn-group>.btn-check:focus+.dual-listbox__button,.btn-group>.btn:hover,.dual-listbox .btn-group>.dual-listbox__button:hover,.btn-group>.btn:focus,.dual-listbox .btn-group>.dual-listbox__button:focus,.btn-group>.btn:active,.dual-listbox .btn-group>.dual-listbox__button:active,.btn-group>.btn.active,.dual-listbox .btn-group>.active.dual-listbox__button,.btn-group-vertical>.btn-check:checked+.btn,.dual-listbox .btn-group-vertical>.btn-check:checked+.dual-listbox__button,.btn-group-vertical>.btn-check:focus+.btn,.dual-listbox .btn-group-vertical>.btn-check:focus+.dual-listbox__button,.btn-group-vertical>.btn:hover,.dual-listbox .btn-group-vertical>.dual-listbox__button:hover,.btn-group-vertical>.btn:focus,.dual-listbox .btn-group-vertical>.dual-listbox__button:focus,.btn-group-vertical>.btn:active,.dual-listbox .btn-group-vertical>.dual-listbox__button:active,.btn-group-vertical>.btn.active,.dual-listbox .btn-group-vertical>.active.dual-listbox__button{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.dual-listbox .btn-group>.dual-listbox__button:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.dual-listbox .btn-group>.dual-listbox__button:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn,.dual-listbox .btn-group>.btn-group:not(:last-child)>.dual-listbox__button{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.dual-listbox .btn-group>.dual-listbox__button:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.dual-listbox .btn-group>:not(.btn-check)+.dual-listbox__button,.btn-group>.btn-group:not(:first-child)>.btn,.dual-listbox .btn-group>.btn-group:not(:first-child)>.dual-listbox__button{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.84375rem;padding-left:.84375rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split,.dual-listbox .btn-group-sm>.dual-listbox__button+.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split,.dual-listbox .btn-group-lg>.dual-listbox__button+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.dual-listbox .btn-group-vertical>.dual-listbox__button,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.dual-listbox .btn-group-vertical>.dual-listbox__button:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.dual-listbox .btn-group-vertical>.dual-listbox__button:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn,.dual-listbox .btn-group-vertical>.btn-group:not(:last-child)>.dual-listbox__button{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.dual-listbox .btn-group-vertical>.dual-listbox__button~.btn,.dual-listbox .btn-group-vertical>.btn~.dual-listbox__button,.dual-listbox .btn-group-vertical>.dual-listbox__button~.dual-listbox__button,.btn-group-vertical>.btn-group:not(:first-child)>.btn,.dual-listbox .btn-group-vertical>.btn-group:not(:first-child)>.dual-listbox__button{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#3fbd9a;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#32977b}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0);border-top-left-radius:4px;border-top-right-radius:4px}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{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{background:none;border:0;border-radius:4px}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#559bfb}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;white-space:nowrap}.navbar-nav{display:flex;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}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:4px;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .2rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1540px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:0 solid rgba(0,0,0,.125);border-radius:4px}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:3px;border-top-right-radius:3px}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:.75rem 1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-0.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.07);border-bottom:0 solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:3px 3px 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.07);border-top:0 solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 3px 3px}.card-header-tabs{margin-right:-0.625rem;margin-bottom:-0.75rem;margin-left:-0.625rem;border-bottom:0}.card-header-pills{margin-right:-0.625rem;margin-left:-0.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:3px}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:3px;border-top-right-radius:3px}.card-img,.card-img-bottom{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.card-group>.card{margin-bottom:14px}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:0.875rem;color:#526484;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#4d8ce2;background-color:#eef5ff;box-shadow:inset 0 -1px 0 #dbdfea}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234d8ce2'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23526484'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#0fac81;outline:0;box-shadow:0 0 0 3px rgba(15,172,129,.1)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid #dbdfea}.accordion-item:first-of-type{border-top-left-radius:4px;border-top-right-radius:4px}.accordion-item:first-of-type .accordion-button{border-top-left-radius:3px;border-top-right-radius:3px}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:.25rem 0;margin-bottom:0;font-size:0.6875rem;list-style:none;background-color:rgba(0,0,0,0);border-radius:4px}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#8091a7;content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:#b7c2d0}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#526484;background-color:#fff;border:1px solid #e5e9f2;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#32977b;background-color:#ebeef2;border-color:#e5e9f2}.page-link:focus{z-index:3;color:#32977b;background-color:#e9ecef;outline:0;box-shadow:none}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0fac81;border-color:#0fac81}.page-item.disabled .page-link{color:#dbdfea;pointer-events:none;background-color:#fff;border-color:#e5e9f2}.page-link{padding:.5625rem .625rem}.page-item:first-child .page-link{border-top-left-radius:4px;border-bottom-left-radius:4px}.page-item:last-child .page-link{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination-lg .page-link{padding:.5625rem .75rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:5px;border-bottom-left-radius:5px}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:5px;border-bottom-right-radius:5px}.pagination-sm .page-link{padding:.4375rem .5rem;font-size:0.75rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:3px;border-bottom-right-radius:3px}.badge{display:inline-block;padding:0 .375rem;font-size:0.675rem;font-weight:500;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:3px}.badge:empty{display:none}.btn .badge,.dual-listbox .dual-listbox__button .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1.25rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:4px}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3.75rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1.25rem}.alert-primary{color:#0b785a;background-color:#e2f5f0;border-color:#b7e6d9}.alert-primary .alert-link{color:#096048}.alert-secondary{color:#263445;background-color:#e7e9ec;border-color:#c3c9d0}.alert-secondary .alert-link{color:#1e2a37}.alert-success{color:#159d78;background-color:#e4fbf5;border-color:#bcf6e6}.alert-success .alert-link{color:#117e60}.alert-info{color:#06889b;background-color:#e1f8fb;border-color:#b5edf5}.alert-info .alert-link{color:#056d7c}.alert-warning{color:#ab840a;background-color:#fef7e2;border-color:#fcebb7}.alert-warning .alert-link{color:#896a08}.alert-danger{color:#a23a32;background-color:#fceae9;border-color:#f8cbc8}.alert-danger .alert-link{color:#822e28}.alert-light{color:#a0a3a9;background-color:#fcfcfd;border-color:#f7f8fb}.alert-light .alert-link{color:#808287}.alert-dark{color:#161e29;background-color:#e4e6e7;border-color:#bcbfc4}.alert-dark .alert-link{color:#121821}.alert-gray{color:#5a6675;background-color:#f0f2f4;border-color:#d9dee5}.alert-gray .alert-link{color:#48525e}.alert-lighter{color:#acacaf;background-color:#fefefe;border-color:#fcfcfe}.alert-lighter .alert-link{color:#8a8a8c}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress{display:flex;height:.5rem;overflow:hidden;font-size:0.75rem;background-color:#f5f6fa;border-radius:2px}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0fac81;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:.5rem .5rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:4px}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#526484;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;color:#212529;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#559bfb;border-color:#559bfb}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:4px;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:4px;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:4px;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:4px;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:4px;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:4px;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:4px;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:4px;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:4px;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:4px;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1540px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:4px;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:4px;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#09674d;background-color:#cfeee6}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#09674d;background-color:#bad6cf}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#09674d;border-color:#09674d}.list-group-item-secondary{color:#202c3b;background-color:#d7dbe0}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#202c3b;background-color:#c2c5ca}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#202c3b;border-color:#202c3b}.list-group-item-success{color:#128667;background-color:#d2f9ee}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#128667;background-color:#bde0d6}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#128667;border-color:#128667}.list-group-item-info{color:#057485;background-color:#cef3f8}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#057485;background-color:#b9dbdf}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#057485;border-color:#057485}.list-group-item-warning{color:#927108;background-color:#fdf2cf}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#927108;background-color:#e4daba}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#927108;border-color:#927108}.list-group-item-danger{color:#8b322b;background-color:#faddda}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#8b322b;background-color:#e1c7c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8b322b;border-color:#8b322b}.list-group-item-light{color:#898c91;background-color:#fafbfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#898c91;background-color:#e1e2e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#898c91;border-color:#898c91}.list-group-item-dark{color:#131a23;background-color:#d2d5d8}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#131a23;background-color:#bdc0c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#131a23;border-color:#131a23}.list-group-item-gray{color:#4d5764;background-color:#e6e9ed}.list-group-item-gray.list-group-item-action:hover,.list-group-item-gray.list-group-item-action:focus{color:#4d5764;background-color:#cfd2d5}.list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#4d5764;border-color:#4d5764}.list-group-item-lighter{color:#939496;background-color:#fdfdfe}.list-group-item-lighter.list-group-item-action:hover,.list-group-item-lighter.list-group-item-action:focus{color:#939496;background-color:#e4e4e5}.list-group-item-lighter.list-group-item-action.active{color:#fff;background-color:#939496;border-color:#939496}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:4px;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(85,155,251,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 3px 12px 1px rgba(43,55,72,.15);border-radius:4px}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:3px;border-top-right-radius:3px}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1051;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -30px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none !important}.modal.modal-static .modal-dialog{transform:scale(0.95)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:0 solid rgba(0,0,0,0);border-radius:5px;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#364a63}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid #dbdfea;border-top-left-radius:4px;border-top-right-radius:4px}.modal-header .btn-close{padding:.5rem .625rem;margin:-0.5rem -0.625rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1.25rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #dbdfea;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:520px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:360px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:720px}}@media(min-width: 1200px){.modal-xl{max-width:980px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1539.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:Roboto,sans-serif;font-style:normal;font-weight:400;line-height:1.65;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:0.8125rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#1f2b3a}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#1f2b3a}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#1f2b3a}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#1f2b3a}.tooltip-inner{max-width:200px;padding:.25rem .75rem;color:#fff;text-align:center;background-color:#1f2b3a;border-radius:3px}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:Roboto,sans-serif;font-style:normal;font-weight:400;line-height:1.65;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:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:5px}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:0.875rem;background-color:#f7f7f7;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:4px;border-top-right-radius:4px}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#526484}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.25rem}.offcanvas-header .btn-close{padding:.625rem .625rem;margin-top:-0.625rem;margin-right:-0.625rem;margin-bottom:-0.625rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1.25rem 1.25rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0fac81}.link-primary:hover,.link-primary:focus{color:#0c8a67}.link-secondary{color:#364a63}.link-secondary:hover,.link-secondary:focus{color:#2b3b4f}.link-success{color:#1ee0ac}.link-success:hover,.link-success:focus{color:#18b38a}.link-info{color:#09c2de}.link-info:hover,.link-info:focus{color:#079bb2}.link-warning{color:#f4bd0e}.link-warning:hover,.link-warning:focus{color:#c3970b}.link-danger{color:#e85347}.link-danger:hover,.link-danger:focus{color:#ba4239}.link-light{color:#e5e9f2}.link-light:hover,.link-light:focus{color:#eaedf5}.link-dark{color:#1f2b3a}.link-dark:hover,.link-dark:focus{color:#19222e}.link-gray{color:#8091a7}.link-gray:hover,.link-gray:focus{color:#667486}.link-lighter{color:#f5f6fa}.link-lighter:hover,.link-lighter:focus{color:#f7f8fb}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.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}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1540px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.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}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex,.stretch,.center,.between-center,.between-start,.justify-around,.justify-between,.justify-center,.justify-end,.justify-start,.align-center,.align-end,.align-start{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 3px 12px 1px rgba(43,55,72,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(43,55,72,.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(43,55,72,.25) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative,.pos-rel{position:relative !important}.position-absolute,.pos-abs{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dbdfea !important}.border-0,.no-bdr{border:0 !important}.border-top{border-top:1px solid #dbdfea !important}.border-top-0,.no-bdr-y,.no-bdr-t{border-top:0 !important}.border-end{border-right:1px solid #dbdfea !important}.border-end-0,.no-bdr-x,.no-bdr-r{border-right:0 !important}.border-bottom{border-bottom:1px solid #dbdfea !important}.border-bottom-0,.no-bdr-y,.no-bdr-b{border-bottom:0 !important}.border-start{border-left:1px solid #dbdfea !important}.border-start-0,.no-bdr-x,.no-bdr-l{border-left:0 !important}.border-primary{border-color:#0fac81 !important}.border-secondary{border-color:#364a63 !important}.border-success{border-color:#1ee0ac !important}.border-info{border-color:#09c2de !important}.border-warning{border-color:#f4bd0e !important}.border-danger{border-color:#e85347 !important}.border-light{border-color:#e5e9f2 !important}.border-dark{border-color:#1f2b3a !important}.border-gray{border-color:#8091a7 !important}.border-lighter{border-color:#f5f6fa !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.375rem !important}.gap-2{gap:.75rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:2.75rem !important}.gap-gs{gap:28px !important}.justify-content-start,.justify-start{justify-content:flex-start !important}.justify-content-end,.justify-end{justify-content:flex-end !important}.justify-content-center,.center,.justify-center{justify-content:center !important}.justify-content-between,.between-center,.between-start,.justify-between{justify-content:space-between !important}.justify-content-around,.justify-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start,.between-start,.align-start{align-items:flex-start !important}.align-items-end,.align-end{align-items:flex-end !important}.align-items-center,.center,.between-center,.align-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch,.stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.375rem !important}.m-2{margin:.75rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:2.75rem !important}.m-gs{margin:28px !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.375rem !important;margin-left:.375rem !important}.mx-2{margin-right:.75rem !important;margin-left:.75rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:2.75rem !important;margin-left:2.75rem !important}.mx-gs{margin-right:28px !important;margin-left:28px !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.375rem !important;margin-bottom:.375rem !important}.my-2{margin-top:.75rem !important;margin-bottom:.75rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:2.75rem !important;margin-bottom:2.75rem !important}.my-gs{margin-top:28px !important;margin-bottom:28px !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.375rem !important}.mt-2{margin-top:.75rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:2.75rem !important}.mt-gs{margin-top:28px !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.375rem !important}.me-2{margin-right:.75rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:2.75rem !important}.me-gs{margin-right:28px !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.375rem !important}.mb-2{margin-bottom:.75rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:2.75rem !important}.mb-gs{margin-bottom:28px !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.375rem !important}.ms-2{margin-left:.75rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:2.75rem !important}.ms-gs{margin-left:28px !important}.ms-auto{margin-left:auto !important}.m-n1{margin:-0.375rem !important}.m-n2{margin:-0.75rem !important}.m-n3{margin:-1rem !important}.m-n4{margin:-1.5rem !important}.m-n5{margin:-2.75rem !important}.m-ngs{margin:-28px !important}.mx-n1{margin-right:-0.375rem !important;margin-left:-0.375rem !important}.mx-n2{margin-right:-0.75rem !important;margin-left:-0.75rem !important}.mx-n3{margin-right:-1rem !important;margin-left:-1rem !important}.mx-n4{margin-right:-1.5rem !important;margin-left:-1.5rem !important}.mx-n5{margin-right:-2.75rem !important;margin-left:-2.75rem !important}.mx-ngs{margin-right:-28px !important;margin-left:-28px !important}.my-n1{margin-top:-0.375rem !important;margin-bottom:-0.375rem !important}.my-n2{margin-top:-0.75rem !important;margin-bottom:-0.75rem !important}.my-n3{margin-top:-1rem !important;margin-bottom:-1rem !important}.my-n4{margin-top:-1.5rem !important;margin-bottom:-1.5rem !important}.my-n5{margin-top:-2.75rem !important;margin-bottom:-2.75rem !important}.my-ngs{margin-top:-28px !important;margin-bottom:-28px !important}.mt-n1{margin-top:-0.375rem !important}.mt-n2{margin-top:-0.75rem !important}.mt-n3{margin-top:-1rem !important}.mt-n4{margin-top:-1.5rem !important}.mt-n5{margin-top:-2.75rem !important}.mt-ngs{margin-top:-28px !important}.me-n1{margin-right:-0.375rem !important}.me-n2{margin-right:-0.75rem !important}.me-n3{margin-right:-1rem !important}.me-n4{margin-right:-1.5rem !important}.me-n5{margin-right:-2.75rem !important}.me-ngs{margin-right:-28px !important}.mb-n1{margin-bottom:-0.375rem !important}.mb-n2{margin-bottom:-0.75rem !important}.mb-n3{margin-bottom:-1rem !important}.mb-n4{margin-bottom:-1.5rem !important}.mb-n5{margin-bottom:-2.75rem !important}.mb-ngs{margin-bottom:-28px !important}.ms-n1{margin-left:-0.375rem !important}.ms-n2{margin-left:-0.75rem !important}.ms-n3{margin-left:-1rem !important}.ms-n4{margin-left:-1.5rem !important}.ms-n5{margin-left:-2.75rem !important}.ms-ngs{margin-left:-28px !important}.p-0{padding:0 !important}.p-1{padding:.375rem !important}.p-2{padding:.75rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:2.75rem !important}.p-gs{padding:28px !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.375rem !important;padding-left:.375rem !important}.px-2{padding-right:.75rem !important;padding-left:.75rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:2.75rem !important;padding-left:2.75rem !important}.px-gs{padding-right:28px !important;padding-left:28px !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.375rem !important;padding-bottom:.375rem !important}.py-2{padding-top:.75rem !important;padding-bottom:.75rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:2.75rem !important;padding-bottom:2.75rem !important}.py-gs{padding-top:28px !important;padding-bottom:28px !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.375rem !important}.pt-2{padding-top:.75rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:2.75rem !important}.pt-gs{padding-top:28px !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.375rem !important}.pe-2{padding-right:.75rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:2.75rem !important}.pe-gs{padding-right:28px !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.375rem !important}.pb-2{padding-bottom:.75rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:2.75rem !important}.pb-gs{padding-bottom:28px !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.375rem !important}.ps-2{padding-left:.75rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:2.75rem !important}.ps-gs{padding-left:28px !important}.font-monospace,.ff-mono{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:2rem !important}.fs-2{font-size:1.75rem !important}.fs-3{font-size:1.5rem !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.15rem !important}.fs-6{font-size:1rem !important}.fst-italic,.ff-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.5 !important}.lh-base{line-height:1.65 !important}.lh-lg{line-height:1.5 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase,.lcap{text-transform:lowercase !important}.text-uppercase,.ucap{text-transform:uppercase !important}.text-capitalize,.ccap{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-gray{--bs-text-opacity: 1;color:rgba(var(--bs-gray-rgb), var(--bs-text-opacity)) !important}.text-lighter{--bs-text-opacity: 1;color:rgba(var(--bs-lighter-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#8094ae !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-gray{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-rgb), var(--bs-bg-opacity)) !important}.bg-lighter,.dual-listbox .dual-listbox__item:hover{--bs-bg-opacity: 1;background-color:rgba(var(--bs-lighter-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:4px !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:3px !important}.rounded-2{border-radius:4px !important}.rounded-3{border-radius:5px !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:4px !important;border-top-right-radius:4px !important}.rounded-end{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important}.rounded-bottom{border-bottom-right-radius:4px !important;border-bottom-left-radius:4px !important}.rounded-start{border-bottom-left-radius:4px !important;border-top-left-radius:4px !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !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:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.375rem !important}.gap-sm-2{gap:.75rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:2.75rem !important}.gap-sm-gs{gap:28px !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.375rem !important}.m-sm-2{margin:.75rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:2.75rem !important}.m-sm-gs{margin:28px !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.375rem !important;margin-left:.375rem !important}.mx-sm-2{margin-right:.75rem !important;margin-left:.75rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:2.75rem !important;margin-left:2.75rem !important}.mx-sm-gs{margin-right:28px !important;margin-left:28px !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.375rem !important;margin-bottom:.375rem !important}.my-sm-2{margin-top:.75rem !important;margin-bottom:.75rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:2.75rem !important;margin-bottom:2.75rem !important}.my-sm-gs{margin-top:28px !important;margin-bottom:28px !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.375rem !important}.mt-sm-2{margin-top:.75rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:2.75rem !important}.mt-sm-gs{margin-top:28px !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.375rem !important}.me-sm-2{margin-right:.75rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:2.75rem !important}.me-sm-gs{margin-right:28px !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.375rem !important}.mb-sm-2{margin-bottom:.75rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:2.75rem !important}.mb-sm-gs{margin-bottom:28px !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.375rem !important}.ms-sm-2{margin-left:.75rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:2.75rem !important}.ms-sm-gs{margin-left:28px !important}.ms-sm-auto{margin-left:auto !important}.m-sm-n1{margin:-0.375rem !important}.m-sm-n2{margin:-0.75rem !important}.m-sm-n3{margin:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.m-sm-n5{margin:-2.75rem !important}.m-sm-ngs{margin:-28px !important}.mx-sm-n1{margin-right:-0.375rem !important;margin-left:-0.375rem !important}.mx-sm-n2{margin-right:-0.75rem !important;margin-left:-0.75rem !important}.mx-sm-n3{margin-right:-1rem !important;margin-left:-1rem !important}.mx-sm-n4{margin-right:-1.5rem !important;margin-left:-1.5rem !important}.mx-sm-n5{margin-right:-2.75rem !important;margin-left:-2.75rem !important}.mx-sm-ngs{margin-right:-28px !important;margin-left:-28px !important}.my-sm-n1{margin-top:-0.375rem !important;margin-bottom:-0.375rem !important}.my-sm-n2{margin-top:-0.75rem !important;margin-bottom:-0.75rem !important}.my-sm-n3{margin-top:-1rem !important;margin-bottom:-1rem !important}.my-sm-n4{margin-top:-1.5rem !important;margin-bottom:-1.5rem !important}.my-sm-n5{margin-top:-2.75rem !important;margin-bottom:-2.75rem !important}.my-sm-ngs{margin-top:-28px !important;margin-bottom:-28px !important}.mt-sm-n1{margin-top:-0.375rem !important}.mt-sm-n2{margin-top:-0.75rem !important}.mt-sm-n3{margin-top:-1rem !important}.mt-sm-n4{margin-top:-1.5rem !important}.mt-sm-n5{margin-top:-2.75rem !important}.mt-sm-ngs{margin-top:-28px !important}.me-sm-n1{margin-right:-0.375rem !important}.me-sm-n2{margin-right:-0.75rem !important}.me-sm-n3{margin-right:-1rem !important}.me-sm-n4{margin-right:-1.5rem !important}.me-sm-n5{margin-right:-2.75rem !important}.me-sm-ngs{margin-right:-28px !important}.mb-sm-n1{margin-bottom:-0.375rem !important}.mb-sm-n2{margin-bottom:-0.75rem !important}.mb-sm-n3{margin-bottom:-1rem !important}.mb-sm-n4{margin-bottom:-1.5rem !important}.mb-sm-n5{margin-bottom:-2.75rem !important}.mb-sm-ngs{margin-bottom:-28px !important}.ms-sm-n1{margin-left:-0.375rem !important}.ms-sm-n2{margin-left:-0.75rem !important}.ms-sm-n3{margin-left:-1rem !important}.ms-sm-n4{margin-left:-1.5rem !important}.ms-sm-n5{margin-left:-2.75rem !important}.ms-sm-ngs{margin-left:-28px !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.375rem !important}.p-sm-2{padding:.75rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:2.75rem !important}.p-sm-gs{padding:28px !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.375rem !important;padding-left:.375rem !important}.px-sm-2{padding-right:.75rem !important;padding-left:.75rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:2.75rem !important;padding-left:2.75rem !important}.px-sm-gs{padding-right:28px !important;padding-left:28px !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.375rem !important;padding-bottom:.375rem !important}.py-sm-2{padding-top:.75rem !important;padding-bottom:.75rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:2.75rem !important;padding-bottom:2.75rem !important}.py-sm-gs{padding-top:28px !important;padding-bottom:28px !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.375rem !important}.pt-sm-2{padding-top:.75rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:2.75rem !important}.pt-sm-gs{padding-top:28px !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.375rem !important}.pe-sm-2{padding-right:.75rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:2.75rem !important}.pe-sm-gs{padding-right:28px !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.375rem !important}.pb-sm-2{padding-bottom:.75rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:2.75rem !important}.pb-sm-gs{padding-bottom:28px !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.375rem !important}.ps-sm-2{padding-left:.75rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:2.75rem !important}.ps-sm-gs{padding-left:28px !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !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:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.375rem !important}.gap-md-2{gap:.75rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:2.75rem !important}.gap-md-gs{gap:28px !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.375rem !important}.m-md-2{margin:.75rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:2.75rem !important}.m-md-gs{margin:28px !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.375rem !important;margin-left:.375rem !important}.mx-md-2{margin-right:.75rem !important;margin-left:.75rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:2.75rem !important;margin-left:2.75rem !important}.mx-md-gs{margin-right:28px !important;margin-left:28px !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.375rem !important;margin-bottom:.375rem !important}.my-md-2{margin-top:.75rem !important;margin-bottom:.75rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:2.75rem !important;margin-bottom:2.75rem !important}.my-md-gs{margin-top:28px !important;margin-bottom:28px !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.375rem !important}.mt-md-2{margin-top:.75rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:2.75rem !important}.mt-md-gs{margin-top:28px !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.375rem !important}.me-md-2{margin-right:.75rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:2.75rem !important}.me-md-gs{margin-right:28px !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.375rem !important}.mb-md-2{margin-bottom:.75rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:2.75rem !important}.mb-md-gs{margin-bottom:28px !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.375rem !important}.ms-md-2{margin-left:.75rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:2.75rem !important}.ms-md-gs{margin-left:28px !important}.ms-md-auto{margin-left:auto !important}.m-md-n1{margin:-0.375rem !important}.m-md-n2{margin:-0.75rem !important}.m-md-n3{margin:-1rem !important}.m-md-n4{margin:-1.5rem !important}.m-md-n5{margin:-2.75rem !important}.m-md-ngs{margin:-28px !important}.mx-md-n1{margin-right:-0.375rem !important;margin-left:-0.375rem !important}.mx-md-n2{margin-right:-0.75rem !important;margin-left:-0.75rem !important}.mx-md-n3{margin-right:-1rem !important;margin-left:-1rem !important}.mx-md-n4{margin-right:-1.5rem !important;margin-left:-1.5rem !important}.mx-md-n5{margin-right:-2.75rem !important;margin-left:-2.75rem !important}.mx-md-ngs{margin-right:-28px !important;margin-left:-28px !important}.my-md-n1{margin-top:-0.375rem !important;margin-bottom:-0.375rem !important}.my-md-n2{margin-top:-0.75rem !important;margin-bottom:-0.75rem !important}.my-md-n3{margin-top:-1rem !important;margin-bottom:-1rem !important}.my-md-n4{margin-top:-1.5rem !important;margin-bottom:-1.5rem !important}.my-md-n5{margin-top:-2.75rem !important;margin-bottom:-2.75rem !important}.my-md-ngs{margin-top:-28px !important;margin-bottom:-28px !important}.mt-md-n1{margin-top:-0.375rem !important}.mt-md-n2{margin-top:-0.75rem !important}.mt-md-n3{margin-top:-1rem !important}.mt-md-n4{margin-top:-1.5rem !important}.mt-md-n5{margin-top:-2.75rem !important}.mt-md-ngs{margin-top:-28px !important}.me-md-n1{margin-right:-0.375rem !important}.me-md-n2{margin-right:-0.75rem !important}.me-md-n3{margin-right:-1rem !important}.me-md-n4{margin-right:-1.5rem !important}.me-md-n5{margin-right:-2.75rem !important}.me-md-ngs{margin-right:-28px !important}.mb-md-n1{margin-bottom:-0.375rem !important}.mb-md-n2{margin-bottom:-0.75rem !important}.mb-md-n3{margin-bottom:-1rem !important}.mb-md-n4{margin-bottom:-1.5rem !important}.mb-md-n5{margin-bottom:-2.75rem !important}.mb-md-ngs{margin-bottom:-28px !important}.ms-md-n1{margin-left:-0.375rem !important}.ms-md-n2{margin-left:-0.75rem !important}.ms-md-n3{margin-left:-1rem !important}.ms-md-n4{margin-left:-1.5rem !important}.ms-md-n5{margin-left:-2.75rem !important}.ms-md-ngs{margin-left:-28px !important}.p-md-0{padding:0 !important}.p-md-1{padding:.375rem !important}.p-md-2{padding:.75rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:2.75rem !important}.p-md-gs{padding:28px !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.375rem !important;padding-left:.375rem !important}.px-md-2{padding-right:.75rem !important;padding-left:.75rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:2.75rem !important;padding-left:2.75rem !important}.px-md-gs{padding-right:28px !important;padding-left:28px !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.375rem !important;padding-bottom:.375rem !important}.py-md-2{padding-top:.75rem !important;padding-bottom:.75rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:2.75rem !important;padding-bottom:2.75rem !important}.py-md-gs{padding-top:28px !important;padding-bottom:28px !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.375rem !important}.pt-md-2{padding-top:.75rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:2.75rem !important}.pt-md-gs{padding-top:28px !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.375rem !important}.pe-md-2{padding-right:.75rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:2.75rem !important}.pe-md-gs{padding-right:28px !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.375rem !important}.pb-md-2{padding-bottom:.75rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:2.75rem !important}.pb-md-gs{padding-bottom:28px !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.375rem !important}.ps-md-2{padding-left:.75rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:2.75rem !important}.ps-md-gs{padding-left:28px !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !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:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.375rem !important}.gap-lg-2{gap:.75rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:2.75rem !important}.gap-lg-gs{gap:28px !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.375rem !important}.m-lg-2{margin:.75rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:2.75rem !important}.m-lg-gs{margin:28px !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.375rem !important;margin-left:.375rem !important}.mx-lg-2{margin-right:.75rem !important;margin-left:.75rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:2.75rem !important;margin-left:2.75rem !important}.mx-lg-gs{margin-right:28px !important;margin-left:28px !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.375rem !important;margin-bottom:.375rem !important}.my-lg-2{margin-top:.75rem !important;margin-bottom:.75rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:2.75rem !important;margin-bottom:2.75rem !important}.my-lg-gs{margin-top:28px !important;margin-bottom:28px !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.375rem !important}.mt-lg-2{margin-top:.75rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:2.75rem !important}.mt-lg-gs{margin-top:28px !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.375rem !important}.me-lg-2{margin-right:.75rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:2.75rem !important}.me-lg-gs{margin-right:28px !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.375rem !important}.mb-lg-2{margin-bottom:.75rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:2.75rem !important}.mb-lg-gs{margin-bottom:28px !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.375rem !important}.ms-lg-2{margin-left:.75rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:2.75rem !important}.ms-lg-gs{margin-left:28px !important}.ms-lg-auto{margin-left:auto !important}.m-lg-n1{margin:-0.375rem !important}.m-lg-n2{margin:-0.75rem !important}.m-lg-n3{margin:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.m-lg-n5{margin:-2.75rem !important}.m-lg-ngs{margin:-28px !important}.mx-lg-n1{margin-right:-0.375rem !important;margin-left:-0.375rem !important}.mx-lg-n2{margin-right:-0.75rem !important;margin-left:-0.75rem !important}.mx-lg-n3{margin-right:-1rem !important;margin-left:-1rem !important}.mx-lg-n4{margin-right:-1.5rem !important;margin-left:-1.5rem !important}.mx-lg-n5{margin-right:-2.75rem !important;margin-left:-2.75rem !important}.mx-lg-ngs{margin-right:-28px !important;margin-left:-28px !important}.my-lg-n1{margin-top:-0.375rem !important;margin-bottom:-0.375rem !important}.my-lg-n2{margin-top:-0.75rem !important;margin-bottom:-0.75rem !important}.my-lg-n3{margin-top:-1rem !important;margin-bottom:-1rem !important}.my-lg-n4{margin-top:-1.5rem !important;margin-bottom:-1.5rem !important}.my-lg-n5{margin-top:-2.75rem !important;margin-bottom:-2.75rem !important}.my-lg-ngs{margin-top:-28px !important;margin-bottom:-28px !important}.mt-lg-n1{margin-top:-0.375rem !important}.mt-lg-n2{margin-top:-0.75rem !important}.mt-lg-n3{margin-top:-1rem !important}.mt-lg-n4{margin-top:-1.5rem !important}.mt-lg-n5{margin-top:-2.75rem !important}.mt-lg-ngs{margin-top:-28px !important}.me-lg-n1{margin-right:-0.375rem !important}.me-lg-n2{margin-right:-0.75rem !important}.me-lg-n3{margin-right:-1rem !important}.me-lg-n4{margin-right:-1.5rem !important}.me-lg-n5{margin-right:-2.75rem !important}.me-lg-ngs{margin-right:-28px !important}.mb-lg-n1{margin-bottom:-0.375rem !important}.mb-lg-n2{margin-bottom:-0.75rem !important}.mb-lg-n3{margin-bottom:-1rem !important}.mb-lg-n4{margin-bottom:-1.5rem !important}.mb-lg-n5{margin-bottom:-2.75rem !important}.mb-lg-ngs{margin-bottom:-28px !important}.ms-lg-n1{margin-left:-0.375rem !important}.ms-lg-n2{margin-left:-0.75rem !important}.ms-lg-n3{margin-left:-1rem !important}.ms-lg-n4{margin-left:-1.5rem !important}.ms-lg-n5{margin-left:-2.75rem !important}.ms-lg-ngs{margin-left:-28px !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.375rem !important}.p-lg-2{padding:.75rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:2.75rem !important}.p-lg-gs{padding:28px !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.375rem !important;padding-left:.375rem !important}.px-lg-2{padding-right:.75rem !important;padding-left:.75rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:2.75rem !important;padding-left:2.75rem !important}.px-lg-gs{padding-right:28px !important;padding-left:28px !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.375rem !important;padding-bottom:.375rem !important}.py-lg-2{padding-top:.75rem !important;padding-bottom:.75rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:2.75rem !important;padding-bottom:2.75rem !important}.py-lg-gs{padding-top:28px !important;padding-bottom:28px !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.375rem !important}.pt-lg-2{padding-top:.75rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:2.75rem !important}.pt-lg-gs{padding-top:28px !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.375rem !important}.pe-lg-2{padding-right:.75rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:2.75rem !important}.pe-lg-gs{padding-right:28px !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.375rem !important}.pb-lg-2{padding-bottom:.75rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:2.75rem !important}.pb-lg-gs{padding-bottom:28px !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.375rem !important}.ps-lg-2{padding-left:.75rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:2.75rem !important}.ps-lg-gs{padding-left:28px !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !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:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.375rem !important}.gap-xl-2{gap:.75rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:2.75rem !important}.gap-xl-gs{gap:28px !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.375rem !important}.m-xl-2{margin:.75rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:2.75rem !important}.m-xl-gs{margin:28px !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.375rem !important;margin-left:.375rem !important}.mx-xl-2{margin-right:.75rem !important;margin-left:.75rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:2.75rem !important;margin-left:2.75rem !important}.mx-xl-gs{margin-right:28px !important;margin-left:28px !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.375rem !important;margin-bottom:.375rem !important}.my-xl-2{margin-top:.75rem !important;margin-bottom:.75rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:2.75rem !important;margin-bottom:2.75rem !important}.my-xl-gs{margin-top:28px !important;margin-bottom:28px !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.375rem !important}.mt-xl-2{margin-top:.75rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:2.75rem !important}.mt-xl-gs{margin-top:28px !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.375rem !important}.me-xl-2{margin-right:.75rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:2.75rem !important}.me-xl-gs{margin-right:28px !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.375rem !important}.mb-xl-2{margin-bottom:.75rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:2.75rem !important}.mb-xl-gs{margin-bottom:28px !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.375rem !important}.ms-xl-2{margin-left:.75rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:2.75rem !important}.ms-xl-gs{margin-left:28px !important}.ms-xl-auto{margin-left:auto !important}.m-xl-n1{margin:-0.375rem !important}.m-xl-n2{margin:-0.75rem !important}.m-xl-n3{margin:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.m-xl-n5{margin:-2.75rem !important}.m-xl-ngs{margin:-28px !important}.mx-xl-n1{margin-right:-0.375rem !important;margin-left:-0.375rem !important}.mx-xl-n2{margin-right:-0.75rem !important;margin-left:-0.75rem !important}.mx-xl-n3{margin-right:-1rem !important;margin-left:-1rem !important}.mx-xl-n4{margin-right:-1.5rem !important;margin-left:-1.5rem !important}.mx-xl-n5{margin-right:-2.75rem !important;margin-left:-2.75rem !important}.mx-xl-ngs{margin-right:-28px !important;margin-left:-28px !important}.my-xl-n1{margin-top:-0.375rem !important;margin-bottom:-0.375rem !important}.my-xl-n2{margin-top:-0.75rem !important;margin-bottom:-0.75rem !important}.my-xl-n3{margin-top:-1rem !important;margin-bottom:-1rem !important}.my-xl-n4{margin-top:-1.5rem !important;margin-bottom:-1.5rem !important}.my-xl-n5{margin-top:-2.75rem !important;margin-bottom:-2.75rem !important}.my-xl-ngs{margin-top:-28px !important;margin-bottom:-28px !important}.mt-xl-n1{margin-top:-0.375rem !important}.mt-xl-n2{margin-top:-0.75rem !important}.mt-xl-n3{margin-top:-1rem !important}.mt-xl-n4{margin-top:-1.5rem !important}.mt-xl-n5{margin-top:-2.75rem !important}.mt-xl-ngs{margin-top:-28px !important}.me-xl-n1{margin-right:-0.375rem !important}.me-xl-n2{margin-right:-0.75rem !important}.me-xl-n3{margin-right:-1rem !important}.me-xl-n4{margin-right:-1.5rem !important}.me-xl-n5{margin-right:-2.75rem !important}.me-xl-ngs{margin-right:-28px !important}.mb-xl-n1{margin-bottom:-0.375rem !important}.mb-xl-n2{margin-bottom:-0.75rem !important}.mb-xl-n3{margin-bottom:-1rem !important}.mb-xl-n4{margin-bottom:-1.5rem !important}.mb-xl-n5{margin-bottom:-2.75rem !important}.mb-xl-ngs{margin-bottom:-28px !important}.ms-xl-n1{margin-left:-0.375rem !important}.ms-xl-n2{margin-left:-0.75rem !important}.ms-xl-n3{margin-left:-1rem !important}.ms-xl-n4{margin-left:-1.5rem !important}.ms-xl-n5{margin-left:-2.75rem !important}.ms-xl-ngs{margin-left:-28px !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.375rem !important}.p-xl-2{padding:.75rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:2.75rem !important}.p-xl-gs{padding:28px !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.375rem !important;padding-left:.375rem !important}.px-xl-2{padding-right:.75rem !important;padding-left:.75rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:2.75rem !important;padding-left:2.75rem !important}.px-xl-gs{padding-right:28px !important;padding-left:28px !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.375rem !important;padding-bottom:.375rem !important}.py-xl-2{padding-top:.75rem !important;padding-bottom:.75rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:2.75rem !important;padding-bottom:2.75rem !important}.py-xl-gs{padding-top:28px !important;padding-bottom:28px !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.375rem !important}.pt-xl-2{padding-top:.75rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:2.75rem !important}.pt-xl-gs{padding-top:28px !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.375rem !important}.pe-xl-2{padding-right:.75rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:2.75rem !important}.pe-xl-gs{padding-right:28px !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.375rem !important}.pb-xl-2{padding-bottom:.75rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:2.75rem !important}.pb-xl-gs{padding-bottom:28px !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.375rem !important}.ps-xl-2{padding-left:.75rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:2.75rem !important}.ps-xl-gs{padding-left:28px !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1540px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.375rem !important}.gap-xxl-2{gap:.75rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:2.75rem !important}.gap-xxl-gs{gap:28px !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.375rem !important}.m-xxl-2{margin:.75rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:2.75rem !important}.m-xxl-gs{margin:28px !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.375rem !important;margin-left:.375rem !important}.mx-xxl-2{margin-right:.75rem !important;margin-left:.75rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:2.75rem !important;margin-left:2.75rem !important}.mx-xxl-gs{margin-right:28px !important;margin-left:28px !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.375rem !important;margin-bottom:.375rem !important}.my-xxl-2{margin-top:.75rem !important;margin-bottom:.75rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:2.75rem !important;margin-bottom:2.75rem !important}.my-xxl-gs{margin-top:28px !important;margin-bottom:28px !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.375rem !important}.mt-xxl-2{margin-top:.75rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:2.75rem !important}.mt-xxl-gs{margin-top:28px !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.375rem !important}.me-xxl-2{margin-right:.75rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:2.75rem !important}.me-xxl-gs{margin-right:28px !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.375rem !important}.mb-xxl-2{margin-bottom:.75rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:2.75rem !important}.mb-xxl-gs{margin-bottom:28px !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.375rem !important}.ms-xxl-2{margin-left:.75rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:2.75rem !important}.ms-xxl-gs{margin-left:28px !important}.ms-xxl-auto{margin-left:auto !important}.m-xxl-n1{margin:-0.375rem !important}.m-xxl-n2{margin:-0.75rem !important}.m-xxl-n3{margin:-1rem !important}.m-xxl-n4{margin:-1.5rem !important}.m-xxl-n5{margin:-2.75rem !important}.m-xxl-ngs{margin:-28px !important}.mx-xxl-n1{margin-right:-0.375rem !important;margin-left:-0.375rem !important}.mx-xxl-n2{margin-right:-0.75rem !important;margin-left:-0.75rem !important}.mx-xxl-n3{margin-right:-1rem !important;margin-left:-1rem !important}.mx-xxl-n4{margin-right:-1.5rem !important;margin-left:-1.5rem !important}.mx-xxl-n5{margin-right:-2.75rem !important;margin-left:-2.75rem !important}.mx-xxl-ngs{margin-right:-28px !important;margin-left:-28px !important}.my-xxl-n1{margin-top:-0.375rem !important;margin-bottom:-0.375rem !important}.my-xxl-n2{margin-top:-0.75rem !important;margin-bottom:-0.75rem !important}.my-xxl-n3{margin-top:-1rem !important;margin-bottom:-1rem !important}.my-xxl-n4{margin-top:-1.5rem !important;margin-bottom:-1.5rem !important}.my-xxl-n5{margin-top:-2.75rem !important;margin-bottom:-2.75rem !important}.my-xxl-ngs{margin-top:-28px !important;margin-bottom:-28px !important}.mt-xxl-n1{margin-top:-0.375rem !important}.mt-xxl-n2{margin-top:-0.75rem !important}.mt-xxl-n3{margin-top:-1rem !important}.mt-xxl-n4{margin-top:-1.5rem !important}.mt-xxl-n5{margin-top:-2.75rem !important}.mt-xxl-ngs{margin-top:-28px !important}.me-xxl-n1{margin-right:-0.375rem !important}.me-xxl-n2{margin-right:-0.75rem !important}.me-xxl-n3{margin-right:-1rem !important}.me-xxl-n4{margin-right:-1.5rem !important}.me-xxl-n5{margin-right:-2.75rem !important}.me-xxl-ngs{margin-right:-28px !important}.mb-xxl-n1{margin-bottom:-0.375rem !important}.mb-xxl-n2{margin-bottom:-0.75rem !important}.mb-xxl-n3{margin-bottom:-1rem !important}.mb-xxl-n4{margin-bottom:-1.5rem !important}.mb-xxl-n5{margin-bottom:-2.75rem !important}.mb-xxl-ngs{margin-bottom:-28px !important}.ms-xxl-n1{margin-left:-0.375rem !important}.ms-xxl-n2{margin-left:-0.75rem !important}.ms-xxl-n3{margin-left:-1rem !important}.ms-xxl-n4{margin-left:-1.5rem !important}.ms-xxl-n5{margin-left:-2.75rem !important}.ms-xxl-ngs{margin-left:-28px !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.375rem !important}.p-xxl-2{padding:.75rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:2.75rem !important}.p-xxl-gs{padding:28px !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.375rem !important;padding-left:.375rem !important}.px-xxl-2{padding-right:.75rem !important;padding-left:.75rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:2.75rem !important;padding-left:2.75rem !important}.px-xxl-gs{padding-right:28px !important;padding-left:28px !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.375rem !important;padding-bottom:.375rem !important}.py-xxl-2{padding-top:.75rem !important;padding-bottom:.75rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:2.75rem !important;padding-bottom:2.75rem !important}.py-xxl-gs{padding-top:28px !important;padding-bottom:28px !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.375rem !important}.pt-xxl-2{padding-top:.75rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:2.75rem !important}.pt-xxl-gs{padding-top:28px !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.375rem !important}.pe-xxl-2{padding-right:.75rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:2.75rem !important}.pe-xxl-gs{padding-right:28px !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.375rem !important}.pb-xxl-2{padding-bottom:.75rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:2.75rem !important}.pb-xxl-gs{padding-bottom:28px !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.375rem !important}.ps-xxl-2{padding-left:.75rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:2.75rem !important}.ps-xxl-gs{padding-left:28px !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !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:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}html{font-size:16px}ol,ul{list-style:none;margin:0;padding:0}a{transition:color .4s,background-color .4s,border .4s,box-shadow .4s}a:focus{outline:none}img{max-width:100%}strong{font-weight:500}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,.h1:last-child,.h2:last-child,.h3:last-child,.h4:last-child,.h5:last-child,.h6:last-child,p:last-child{margin-bottom:0}h1,.h1,h2,.h2{letter-spacing:-0.03em}h3,.h3,h4,.h4{letter-spacing:-0.02em}h5,.h5,h6,.h6{letter-spacing:-0.01em}@media(min-width: 992px){h1,.h1{font-size:3.75rem;font-weight:400;letter-spacing:-0.04em}h2,.h2{font-size:2.5rem;letter-spacing:-0.03em}h3,.h3{font-size:2rem;letter-spacing:-0.03em}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1.05rem}}.list-inline li{display:inline-block}.list-inline li:not(:last-child){margin-right:1rem}.ellipsis,.nk-msg-text .title,.attach-item span,.tb-odr-item .tb-odr-info,.tb-tnx-item .tb-tnx-desc,.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ff-base{font-family:Roboto,sans-serif !important}.ff-alt{font-family:Nunito,sans-serif !important}.fw-medium{font-weight:500 !important}.text-white h1,.text-white h2,.text-white h3,.text-white h4,.text-white h5,.text-white h6,.text-white .h1,.text-white .h2,.text-white .h3,.text-white .h4,.text-white .h5,.text-white .h6{color:#fff}@media(min-width: 992px){.lead{font-size:1.09375rem}}small,.small{font-weight:400 !important}.text-soft{color:#8094ae !important}.text-base{color:#526484 !important}.text-head{color:#364a63 !important}.circle{border-radius:50%}.round{border-radius:4px}.round-sm{border-radius:3px}.round-lg{border-radius:5px}.round-xl{border-radius:10px}svg{height:100%;max-width:100%}.sq{height:40px;width:40px}.sq-xs{height:18px;width:18px}.sq-sm{height:24px;width:24px}.sq-md{height:32px;width:32px}.sq-lg{height:60px;width:60px}.sq-xl{height:80px;width:80px}.divider{border-top:1px solid #e5e9f2 !important;margin:28px 0;display:block}.divider.xs{margin:.5rem 0}.divider.sm{margin:1rem 0}.divider.md{margin:1.5rem 0}.divider.lg{margin:2.25rem 0}.divider.xl{margin:2.75rem 0}.bg-blue{background-color:#559bfb !important}.text-blue{color:#559bfb !important}.bg-azure{background-color:#1676fb !important}.text-azure{color:#1676fb !important}.bg-indigo{background-color:#2c3782 !important}.text-indigo{color:#2c3782 !important}.bg-purple{background-color:#816bff !important}.text-purple{color:#816bff !important}.bg-pink{background-color:#ff63a5 !important}.text-pink{color:#ff63a5 !important}.bg-orange{background-color:#ffa353 !important}.text-orange{color:#ffa353 !important}.bg-teal{background-color:#20c997 !important}.text-teal{color:#20c997 !important}.bg-blue-dim{background-color:#e9f2fe !important}.text-blue-dim{color:#e9f2fe !important}.bg-azure-dim{background-color:#e1edfe !important}.text-azure-dim{color:#e1edfe !important}.bg-indigo-dim{background-color:#e4e5ef !important}.text-indigo-dim{color:#e4e5ef !important}.bg-purple-dim{background-color:#efecff !important}.text-purple-dim{color:#efecff !important}.bg-pink-dim{background-color:#ffebf3 !important}.text-pink-dim{color:#ffebf3 !important}.bg-orange-dim{background-color:#fff3e9 !important}.text-orange-dim{color:#fff3e9 !important}.bg-teal-dim{background-color:#e2f8f1 !important}.text-teal-dim{color:#e2f8f1 !important}.bg-primary-dim,.dual-listbox .dual-listbox__item:active,.dual-listbox .dual-listbox__item.dual-listbox__item--selected{background-color:#e0f4ef !important}.text-primary-dim{color:#e0f4ef !important}.bg-success-dim{background-color:#e2fbf4 !important}.text-success-dim{color:#e2fbf4 !important}.bg-info-dim{background-color:#dff7fb !important}.text-info-dim{color:#dff7fb !important}.bg-warning-dim{background-color:#fef6e0 !important}.text-warning-dim{color:#fef6e0 !important}.bg-danger-dim{background-color:#fce9e7 !important}.text-danger-dim{color:#fce9e7 !important}.bg-secondary-dim{background-color:#e5ecf5 !important}.text-secondary-dim{color:#e5ecf5 !important}.bg-dark-dim{background-color:#d9e1ef !important}.text-dark-dim{color:#d9e1ef !important}.bg-gray-dim{background-color:#edf2f9 !important}.text-gray-dim{color:#edf2f9 !important}.bg-gray-100{background-color:#ebeef2 !important}.bg-gray-200{background-color:#e5e9f2 !important}.bg-gray-300{background-color:#dbdfea !important}.bg-gray-400{background-color:#b7c2d0 !important}.bg-gray-500{background-color:#8091a7 !important}.bg-gray-600{background-color:#3c4d62 !important}.bg-gray-700{background-color:#344357 !important}.bg-gray-800{background-color:#2b3748 !important}.bg-gray-900{background-color:#1f2b3a !important}.bg-abstract{background-image:linear-gradient(to right, #2c3782 calc(60% - 150px), #39469f calc(60% - 150px), #39469f 60%, #4856b5 60%, #4856b5 calc(60% + 150px), #5b6ac6 calc(60% + 150px), #5b6ac6 100%)}.bg-white-1{background:rgba(255,255,255,.1) !important}.bg-white-2{background:rgba(255,255,255,.2) !important}.bg-white-3{background:rgba(255,255,255,.3) !important}.bg-white-4{background:rgba(255,255,255,.4) !important}.bg-white-5{background:rgba(255,255,255,.5) !important}.bg-white-6{background:rgba(255,255,255,.6) !important}.bg-white-7{background:rgba(255,255,255,.7) !important}.bg-white-8{background:rgba(255,255,255,.8) !important}.bg-white-9{background:rgba(255,255,255,.9) !important}.border-transparent{border-color:rgba(0,0,0,0)}.w-40px{width:40px !important}.w-min-40px{min-width:40px !important}.w-max-40px{max-width:40px !important}.w-80px{width:80px !important}.w-min-80px{min-width:80px !important}.w-max-80px{max-width:80px !important}.w-90px{width:90px !important}.w-min-90px{min-width:90px !important}.w-max-90px{max-width:90px !important}.w-100px{width:100px !important}.w-min-100px{min-width:100px !important}.w-max-100px{max-width:100px !important}.w-110px{width:110px !important}.w-min-110px{min-width:110px !important}.w-max-110px{max-width:110px !important}.w-120px{width:120px !important}.w-min-120px{min-width:120px !important}.w-max-120px{max-width:120px !important}.w-125px{width:125px !important}.w-min-125px{min-width:125px !important}.w-max-125px{max-width:125px !important}.w-130px{width:130px !important}.w-min-130px{min-width:130px !important}.w-max-130px{max-width:130px !important}.w-140px{width:140px !important}.w-min-140px{min-width:140px !important}.w-max-140px{max-width:140px !important}.w-150px{width:150px !important}.w-min-150px{min-width:150px !important}.w-max-150px{max-width:150px !important}.w-175px{width:175px !important}.w-min-175px{min-width:175px !important}.w-max-175px{max-width:175px !important}.w-200px{width:200px !important}.w-min-200px{min-width:200px !important}.w-max-200px{max-width:200px !important}.w-220px{width:220px !important}.w-min-220px{min-width:220px !important}.w-max-220px{max-width:220px !important}.w-225px{width:225px !important}.w-min-225px{min-width:225px !important}.w-max-225px{max-width:225px !important}.w-250px{width:250px !important}.w-min-250px{min-width:250px !important}.w-max-250px{max-width:250px !important}.w-300px{width:300px !important}.w-min-300px{min-width:300px !important}.w-max-300px{max-width:300px !important}.w-350px{width:350px !important}.w-min-350px{min-width:350px !important}.w-max-350px{max-width:350px !important}.w-400px{width:400px !important}.w-min-400px{min-width:400px !important}.w-max-400px{max-width:400px !important}.w-550px{width:550px !important}.w-min-550px{min-width:550px !important}.w-max-550px{max-width:550px !important}.w-max-100,.wide-xs-fix,.wide-sm-fix,.wide-md-fix,.wide-lg-fix{max-width:100% !important}.w-min-100{min-width:100% !important}.w-max-auto{max-width:inherit !important}.w-min-auto{min-width:auto !important}.w-15{width:15% !important}.w-20{width:20% !important}.w-30{width:30% !important}.w-35{width:35% !important}.w-40{width:40% !important}.w-45{width:45% !important}.w-55{width:55% !important}.w-60{width:60% !important}.w-65{width:65% !important}.w-70{width:70% !important}.w-80{width:80% !important}.w-85{width:85% !important}.w-90{width:90% !important}.w-95{width:95% !important}@media(min-width: 576px){.wide-xs{max-width:520px !important}.wide-xs-fix{width:520px !important}}@media(min-width: 768px){.wide-sm{max-width:720px !important}.wide-sm-fix{width:720px !important}}@media(min-width: 992px){.wide-md{max-width:960px !important}.wide-md-fix{width:960px !important}}@media(min-width: 1200px){.wide-lg{max-width:1140px !important}.wide-lg-fix{width:1140px !important}}@media(min-width: 1280px){.wide-xl{max-width:1240px !important}.wide-xl-fix{width:1240px !important}}.wide-xs-fix{width:520px !important}.wide-sm-fix{width:720px !important}.wide-md-fix{width:960px !important}.wide-lg-fix{width:1140px !important}.wide-xl-fix{width:1240px !important}@media(min-width: 1200px)and (max-width: 1660px){.wide-fit{max-width:1140px}}.h-100px{height:100px !important}.h-min-100px{min-height:100px !important}.h-max-100px{max-height:100px !important}.h-150px{height:150px !important}.h-min-150px{min-height:150px !important}.h-max-150px{max-height:150px !important}.h-175px{height:175px !important}.h-min-175px{min-height:175px !important}.h-max-175px{max-height:175px !important}.h-200px{height:200px !important}.h-min-200px{min-height:200px !important}.h-max-200px{max-height:200px !important}.h-225px{height:225px !important}.h-min-225px{min-height:225px !important}.h-max-225px{max-height:225px !important}.h-250px{height:250px !important}.h-min-250px{min-height:250px !important}.h-max-250px{max-height:250px !important}.h-275px{height:275px !important}.h-min-275px{min-height:275px !important}.h-max-275px{max-height:275px !important}.h-300px{height:300px !important}.h-min-300px{min-height:300px !important}.h-max-300px{max-height:300px !important}.h-325px{height:325px !important}.h-min-325px{min-height:325px !important}.h-max-325px{max-height:325px !important}.h-350px{height:350px !important}.h-min-350px{min-height:350px !important}.h-max-350px{max-height:350px !important}.h-375px{height:375px !important}.h-min-375px{min-height:375px !important}.h-max-375px{max-height:375px !important}.h-400px{height:400px !important}.h-min-400px{min-height:400px !important}.h-max-400px{max-height:400px !important}.h-425px{height:425px !important}.h-min-425px{min-height:425px !important}.h-max-425px{max-height:425px !important}.h-450px{height:450px !important}.h-min-450px{min-height:450px !important}.h-max-450px{max-height:450px !important}.h-475px{height:475px !important}.h-min-475px{min-height:475px !important}.h-max-475px{max-height:475px !important}.h-500px{height:500px !important}.h-min-500px{min-height:500px !important}.h-max-500px{max-height:500px !important}.absolute-top-left{position:absolute;top:0;left:0}.absolute-top-right{position:absolute;top:0;right:0}.absolute-bottom-left{position:absolute;bottom:0;left:0}.absolute-bottom-right{position:absolute;bottom:0;right:0}.shrink-0{flex-shrink:0}.badge{position:relative;border:1px solid currentColor;line-height:1.125rem;font-family:Roboto,sans-serif;letter-spacing:.01em;vertical-align:middle;display:inline-flex}.badge .icon+span,.badge span+.icon{padding-left:4px}.badge.rounded-pill{border-radius:10rem;padding-right:.5rem;padding-left:.5rem}.badge-sm{padding:.3125rem .75rem;font-size:.75rem}.badge-sm.rounded-pill{padding:.3125rem .875rem}.badge-md{padding:.47rem 1rem;font-size:.8125rem !important}.badge-md.rounded-pill{padding:.47rem 1rem}.badge-lg{padding:.75rem 1.25rem;font-size:.93rem !important}.badge-lg.rounded-pill{padding:.75rem 1.25rem}.badge-xl{padding:.875rem 1.5rem;font-size:1.125rem !important}.badge-xl.rounded-pill{padding:.875rem 1.5rem}.badge.bg-light{color:#364a63}.badge-lighter{color:#526484}.badge .icon{font-size:1rem}.bg-primary{border-color:#0fac81;background:#0fac81}.bg-secondary{border-color:#364a63;background:#364a63}.bg-success{border-color:#1ee0ac;background:#1ee0ac}.bg-info{border-color:#09c2de;background:#09c2de}.bg-warning{border-color:#f4bd0e;background:#f4bd0e}.bg-danger{border-color:#e85347;background:#e85347}.bg-light{border-color:#e5e9f2;background:#e5e9f2}.bg-dark{border-color:#1f2b3a;background:#1f2b3a}.bg-gray{border-color:#8091a7;background:#8091a7}.bg-lighter,.dual-listbox .dual-listbox__item:hover{border-color:#f5f6fa;background:#f5f6fa}.bg-outline-primary{color:#0fac81;border-color:#6fcdb3}.bg-outline-secondary{color:#364a63;border-color:#8692a1}.bg-outline-success{color:#1ee0ac;border-color:#78eccd}.bg-outline-info{color:#09c2de;border-color:#6bdaeb}.bg-outline-warning{color:#f4bd0e;border-color:#f8d76e}.bg-outline-danger{color:#e85347;border-color:#f19891}.bg-outline-light{color:#b7c2d0;border-color:#d4dae3}.bg-outline-dark{color:#1f2b3a;border-color:#798089}.bg-outline-gray{color:#8091a7;border-color:#b3bdca}.bg-outline-lighter{color:#e5e9f2;border-color:#eff2f7}.badge-dim.bg-primary{color:#0fac81;background-color:#e5f6f1 !important;border-color:#e5f6f1}.badge-dim.bg-outline-primary{color:#0fac81;background-color:#e5f6f1;border-color:#9fdecd}.badge-dim.bg-secondary{color:#364a63;background-color:#e9ebee !important;border-color:#e9ebee}.badge-dim.bg-outline-secondary{color:#364a63;background-color:#e9ebee;border-color:#afb7c1}.badge-dim.bg-success{color:#1ee0ac;background-color:#e6fcf6 !important;border-color:#e6fcf6}.badge-dim.bg-outline-success{color:#1ee0ac;background-color:#e6fcf6;border-color:#a5f3de}.badge-dim.bg-info{color:#09c2de;background-color:#e4f8fb !important;border-color:#e4f8fb}.badge-dim.bg-outline-info{color:#09c2de;background-color:#e4f8fb;border-color:#9de7f2}.badge-dim.bg-warning{color:#f4bd0e;background-color:#fef8e4 !important;border-color:#fef8e4}.badge-dim.bg-outline-warning{color:#f4bd0e;background-color:#fef8e4;border-color:#fbe59f}.badge-dim.bg-danger{color:#e85347;background-color:#fceceb !important;border-color:#fceceb}.badge-dim.bg-outline-danger{color:#e85347;background-color:#fceceb;border-color:#f6bab5}.badge-dim.bg-light{color:#b7c2d0;background-color:#f7f8fa !important;border-color:#f7f8fa}.badge-dim.bg-outline-light{color:#b7c2d0;background-color:#f7f8fa;border-color:#e2e7ec}.badge-dim.bg-dark{color:#1f2b3a;background-color:#e6e8e9 !important;border-color:#e6e8e9}.badge-dim.bg-outline-dark{color:#1f2b3a;background-color:#e6e8e9;border-color:#a5aab0}.badge-dim.bg-gray{color:#8091a7;background-color:#f1f3f5 !important;border-color:#f1f3f5}.badge-dim.bg-outline-gray{color:#8091a7;background-color:#f1f3f5;border-color:#ccd3dc}.badge-dim.bg-lighter,.dual-listbox .badge-dim.dual-listbox__item:hover{color:#e5e9f2;background-color:#fcfdfe !important;border-color:#fcfdfe}.badge-dim.bg-outline-lighter{color:#e5e9f2;background-color:#fcfdfe;border-color:#f5f6fa}.badge-dot{display:inline-flex;align-items:center;background-color:rgba(0,0,0,0) !important;border:none;padding-left:12px;padding-right:0;font-size:12px}.badge-dot:before{position:absolute;content:"";left:0;top:50%;transform:translateY(-50%);display:inline-block;height:6px;width:6px;margin-top:-1px;border-radius:50%;background:currentColor}.badge-dot.badge-sm,.badge-dot.badge-md{padding-left:16px}.badge-dot.badge-sm:before,.badge-dot.badge-md:before{height:8px;width:8px;margin-top:0}.badge-dot.badge-lg,.badge-dot.badge-xl{padding-left:24px}.badge-dot.badge-lg:before,.badge-dot.badge-xl:before{height:12px;width:12px;margin-top:0}.badge-dot.bg-primary{color:#0fac81}.badge-dot.bg-secondary{color:#364a63}.badge-dot.bg-success{color:#1ee0ac}.badge-dot.bg-info{color:#09c2de}.badge-dot.bg-warning{color:#f4bd0e}.badge-dot.bg-danger{color:#e85347}.badge-dot.bg-light{color:#b7c2d0}.badge-dot.bg-dark{color:#1f2b3a}.badge-dot.bg-gray{color:#8091a7}.badge-dot.bg-lighter,.dual-listbox .badge-dot.dual-listbox__item:hover{color:#e5e9f2}@media(max-width: 767.98px){.badge-dot-sm{width:0;overflow:hidden}}@media(max-width: 413px){.badge-dot-mb{width:0;overflow:hidden}}@media(max-width: 369px){.badge-dot-xs{width:0;overflow:hidden}}.alert:last-child{margin-bottom:0}.alert-link{box-shadow:0 1px 0 currentColor}.alert-link:hover{box-shadow:none}.alert h5,.alert .h5,.alert h6,.alert .h6,.alert .title{font-size:1.05rem}.alert.alert-icon{padding-left:3.25rem}.alert.alert-icon>.icon{position:absolute;font-size:1.25rem;line-height:1;width:2rem;top:1rem;left:1.25rem;margin-left:-1px}.alert-dismissible .close{top:50%;transform:translateY(-50%);transition:.3s ease;margin-top:-1px;position:absolute;right:0;padding:1rem 1.25rem;color:currentColor}.alert-dismissible .close:focus{outline:none}.alert-dismissible .close:hover{color:currentColor;opacity:.75}.alert-dismissible .close:after{font-family:"Nioicon";content:"";font-size:1.1rem}.alert-light,.alert-lighter,.alert-gray{border-color:#e5e9f2;color:#526484}.alert-light .alert-link,.alert-lighter .alert-link,.alert-gray .alert-link{color:#526484}.alert-alt{position:relative;padding:.875rem;border-radius:12px}.alert-alt.alert-icon{padding-left:4rem}.alert-alt.alert-icon>.icon{position:absolute;font-size:2rem;line-height:1;width:4rem;top:50%;left:0;transform:translateY(-50%);text-align:center;opacity:.5}a.alert:hover{color:currentColor}.alert-fill.alert-primary{color:#fff;background:#0fac81}.alert-fill.alert-secondary{color:#fff;background:#364a63}.alert-fill.alert-success{color:#fff;background:#1ee0ac}.alert-fill.alert-info{color:#fff;background:#09c2de}.alert-fill.alert-warning{color:#fff;background:#f4bd0e}.alert-fill.alert-danger{color:#fff;background:#e85347}.alert-fill.alert-light{color:#000;background:#e5e9f2}.alert-fill.alert-dark{color:#fff;background:#1f2b3a}.alert-fill.alert-gray{color:#fff;background:#8091a7}.alert-fill.alert-lighter{color:#000;background:#ebeef2}.alert-fill{border-width:0}.alert-fill .alert-link,.alert-fill .icon,.alert-fill h4,.alert-fill .h4,.alert-fill h5,.alert-fill .h5,.alert-fill h6,.alert-fill .h6{color:currentColor}.alert-fill.alert-light{color:#364a63}.alert-fill.alert-lighter{color:#526484}.alert-pro{box-shadow:0 4px 15px 0 rgba(31,43,58,.1);border:none;border-left:4px solid rgba(0,0,0,0);color:#526484;line-height:1.5;background:#fff}.alert-pro.no-shadow{box-shadow:none}.alert-pro.no-border{border-left:0}.alert-pro.alert-icon{padding-left:4rem}.alert-pro.alert-icon>.icon{font-size:1.75rem;top:50%;transform:translateY(-50%)}.alert-pro.alert-primary{border-color:#0fac81}.alert-pro.alert-primary>.icon{color:#0fac81}.alert-pro.alert-secondary{border-color:#364a63}.alert-pro.alert-secondary>.icon{color:#364a63}.alert-pro.alert-success{border-color:#1ee0ac}.alert-pro.alert-success>.icon{color:#1ee0ac}.alert-pro.alert-info{border-color:#09c2de}.alert-pro.alert-info>.icon{color:#09c2de}.alert-pro.alert-warning{border-color:#f4bd0e}.alert-pro.alert-warning>.icon{color:#f4bd0e}.alert-pro.alert-danger{border-color:#e85347}.alert-pro.alert-danger>.icon{color:#e85347}.alert-pro.alert-light{border-color:#b7c2d0}.alert-pro.alert-light>.icon{color:#b7c2d0}.alert-pro.alert-dark{border-color:#1f2b3a}.alert-pro.alert-dark>.icon{color:#1f2b3a}.alert-pro.alert-gray{border-color:#8091a7}.alert-pro.alert-gray>.icon{color:#8091a7}.alert-pro.alert-lighter{border-color:#b7c2d0}.alert-pro.alert-lighter>.icon{color:#b7c2d0}.breadcrumb-item{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.05rem}.breadcrumb-item a:not(:hover){color:#8094ae}.breadcrumb-pipe .breadcrumb-item+.breadcrumb-item::before{content:"|"}.breadcrumb-arrow .breadcrumb-item+.breadcrumb-item::before{font-family:"Nioicon";content:""}.breadcrumb-item.active:not(:only-child){font-weight:400}.breadcrumb-alt .breadcrumb-item{text-transform:unset;letter-spacing:0;color:#8094ae}.breadcrumb-xs .breadcrumb-item+.breadcrumb-item{padding-left:.25rem}.breadcrumb-xs .breadcrumb-item+.breadcrumb-item:before{padding-right:.25rem;font-size:.8em}.breadcrumb-sm .breadcrumb-item{font-size:13px}.link{display:inline-flex;align-items:center;font-size:.85rem;font-weight:500;font-family:Roboto,sans-serif;line-height:1;border:none;background:rgba(0,0,0,0);transition:all .3s ease;white-space:nowrap}.link:focus{box-shadow:none;outline:none}.link .icon{font-size:1.3em}.link span,.link .icon{display:inline-block}.link .icon-circle{display:inline-flex}.link .icon+span,.link span+.icon{padding-left:10px}.link-md{font-size:1.25rem}.link-sm{font-size:.75rem}.link-dim{opacity:.7}.link-dim:hover{opacity:1}.link-block{display:flex}.link-between{justify-content:space-between}.link-primary{color:#0fac81 !important}.link-on-primary:hover{color:#0fac81 !important}.link-secondary{color:#364a63 !important}.link-on-secondary:hover{color:#364a63 !important}.link-success{color:#1ee0ac !important}.link-on-success:hover{color:#1ee0ac !important}.link-info{color:#09c2de !important}.link-on-info:hover{color:#09c2de !important}.link-warning{color:#f4bd0e !important}.link-on-warning:hover{color:#f4bd0e !important}.link-danger{color:#e85347 !important}.link-on-danger:hover{color:#e85347 !important}.link-light{color:#8094ae !important}.link-on-light:hover{color:#8094ae !important}.link-dark{color:#1f2b3a !important}.link-on-dark:hover{color:#1f2b3a !important}.link-gray{color:#8091a7 !important}.link-on-gray:hover{color:#8091a7 !important}.link-lighter{color:#b7c2d0 !important}.link-on-lighter:hover{color:#b7c2d0 !important}.link-text{color:#526484 !important}.link-on-text:hover{color:#526484 !important}.link-danger:hover,.link-warning:hover,.link-success:hover,.link-info:hover{color:#526484 !important}.btn,.dual-listbox .dual-listbox__button{position:relative;letter-spacing:.02em;display:inline-flex;align-items:center}.btn-xl{padding:.6875rem 1.5rem;font-size:0.9375rem;border-radius:5px;line-height:1.25rem}.btn-xs{padding:.125rem .5rem;font-size:0.6875rem;border-radius:3px;line-height:1rem}.btn .icon,.dual-listbox .dual-listbox__button .icon{font-size:1.4em;line-height:inherit}.btn>span,.dual-listbox .dual-listbox__button>span{display:inline-block;white-space:nowrap}.btn>span:only-child,.dual-listbox .dual-listbox__button>span:only-child{width:100%}.btn .icon+span,.dual-listbox .dual-listbox__button .icon+span,.btn span+.icon,.dual-listbox .dual-listbox__button span+.icon{padding-left:8px}.btn .dd-indc,.dual-listbox .dual-listbox__button .dd-indc{transform:translateX(-8px)}.btn span+.dd-indc,.dual-listbox .dual-listbox__button span+.dd-indc{transform:translateX(8px)}.btn-lg .icon+span,.btn-group-lg>.btn .icon+span,.dual-listbox .btn-group-lg>.dual-listbox__button .icon+span,.btn-lg span+.icon,.btn-group-lg>.btn span+.icon,.dual-listbox .btn-group-lg>.dual-listbox__button span+.icon{padding-left:12px}.btn-round{border-radius:2.125rem}.btn-block{justify-content:center;width:100%}.btn-ucap,.btn.ucap,.dual-listbox .ucap.dual-listbox__button{text-transform:uppercase;font-size:12px;letter-spacing:.05em}.btn-icon:not([class*=btn-icon-break]),.dt-buttons .btn-secondary:not([class*=btn-icon-break]){padding-left:0;padding-right:0}.btn-icon .icon,.dt-buttons .btn-secondary .icon{width:2.125rem}.btn-icon.btn-xl .icon,.dt-buttons .btn-xl.btn-secondary .icon{width:2.625rem}.btn-icon.btn-lg .icon,.dt-buttons .btn-lg.btn-secondary .icon,.btn-group-lg>.btn-icon.btn .icon,.dual-listbox .btn-group-lg>.btn-icon.dual-listbox__button .icon,.dt-buttons .btn-group-lg>.btn.btn-secondary .icon,.dt-buttons .dual-listbox .btn-group-lg>.btn-secondary.dual-listbox__button .icon,.dual-listbox .dt-buttons .btn-group-lg>.btn-secondary.dual-listbox__button .icon{width:2.625rem}.btn-icon.btn-sm .icon,.dt-buttons .btn-sm.btn-secondary .icon,.btn-group-sm>.btn-icon.btn .icon,.dual-listbox .btn-group-sm>.btn-icon.dual-listbox__button .icon,.dt-buttons .btn-group-sm>.btn.btn-secondary .icon,.dt-buttons .dual-listbox .btn-group-sm>.btn-secondary.dual-listbox__button .icon,.dual-listbox .dt-buttons .btn-group-sm>.btn-secondary.dual-listbox__button .icon{width:1.75rem}.btn-icon.btn-xs .icon,.dt-buttons .btn-xs.btn-secondary .icon{width:1.25rem;font-size:1.1em}.btn-icon .dot,.dt-buttons .btn-secondary .dot{position:absolute;top:.35rem;right:.35rem;transform:translate(50%, -50%)}.btn-icon .badge,.dt-buttons .btn-secondary .badge{position:absolute;top:.25rem;right:.25rem;transform:translate(50%, -50%)}.btn-icon .badge-circle,.dt-buttons .btn-secondary .badge-circle{border-radius:50%;height:1.125rem;width:1.125rem;padding:0;font-weight:700;font-size:11px;text-align:center;justify-content:center}.btn-mw{min-width:120px;justify-content:center}.btn-wrap{flex-direction:column;align-items:center;flex-grow:0}.btn-extext{font-size:12px;font-weight:500;text-align:center;margin-top:.25rem;color:#8094ae}.btn-wider{display:flex}.btn-wider .icon+span,.btn-wider span+.icon{margin-left:auto}.btn-auto{min-width:auto}.btn-pd-auto{padding-left:.25rem;padding-right:.25rem}.btn .spinner-border,.dual-listbox .dual-listbox__button .spinner-border,.btn .spinner-grow,.dual-listbox .dual-listbox__button .spinner-grow{margin:.125rem}.btn .spinner-border+span,.dual-listbox .dual-listbox__button .spinner-border+span,.btn .spinner-grow+span,.dual-listbox .dual-listbox__button .spinner-grow+span{margin-left:.25rem}.btn-indc{width:100%}.btn-indc .icon{font-size:1.43em}.btn-indc .indc{opacity:.6;margin-left:-8px;margin-right:auto}.btn-indc span+.indc{margin-left:auto;margin-right:-8px}@media(min-width: 768px){.btn-xl{padding:.625rem 2rem;font-size:1.125rem;border-radius:5px;line-height:2rem}.btn-xl.btn-round{border-radius:3.25rem}.btn-icon.btn-xl .icon,.dt-buttons .btn-xl.btn-secondary .icon{width:3.25rem}}.btn-trigger{position:relative;z-index:1;color:#526484}.btn-trigger:focus{box-shadow:none}.btn-trigger:before{position:absolute;z-index:-1;height:20px;width:20px;top:50%;left:50%;transform:translate(-50%, -50%);transform-origin:50% 50%;content:"";background-color:#e5e9f2;border-radius:50%;opacity:0;transition:all .3s}.is-dark .btn-trigger:before{background-color:#03231a}.show>.btn-trigger:before{opacity:1;height:120%;width:120%}.btn-trigger:hover:before,.btn-trigger:focus:before,.btn-trigger.active:not(.revarse):before{opacity:1;height:120%;width:120%}.btn-trigger.active:hover:before{background-color:#dbdfea}a:hover .btn-trigger:before{opacity:1;height:120%;width:120%}.btn-dim.btn-outline-primary{color:#0fac81;background-color:#e5f6f1;border-color:#9fdecd}.btn-dim.btn-outline-primary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#0fac81;border-color:#0fac81}.btn-white.btn-outline-primary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-primary.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-primary:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#0fac81;background:#e5f6f1}.btn-dim.btn-outline-success{color:#1ee0ac;background-color:#e6fcf6;border-color:#a5f3de}.btn-dim.btn-outline-success:not(:disabled):not(.disabled):hover{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.btn-white.btn-outline-success:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-success.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-success:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#1ee0ac;background:#e6fcf6}.btn-dim.btn-outline-warning{color:#f4bd0e;background-color:#fef8e4;border-color:#fbe59f}.btn-dim.btn-outline-warning:not(:disabled):not(.disabled):hover{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.btn-white.btn-outline-warning:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-warning.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-warning:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#f4bd0e;background:#fef8e4}.btn-dim.btn-outline-info{color:#09c2de;background-color:#e4f8fb;border-color:#9de7f2}.btn-dim.btn-outline-info:not(:disabled):not(.disabled):hover{color:#fff;background-color:#09c2de;border-color:#09c2de}.btn-white.btn-outline-info:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-info.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-info:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#09c2de;background:#e4f8fb}.btn-dim.btn-outline-danger{color:#e85347;background-color:#fceceb;border-color:#f6bab5}.btn-dim.btn-outline-danger:not(:disabled):not(.disabled):hover{color:#fff;background-color:#e85347;border-color:#e85347}.btn-white.btn-outline-danger:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-danger.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-danger:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#e85347;background:#fceceb}.btn-dim.btn-outline-secondary{color:#364a63;background-color:#e9ebee;border-color:#b9c0c8}.btn-dim.btn-outline-secondary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#364a63;border-color:#364a63}.btn-white.btn-outline-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-secondary.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#364a63;background:#e9ebee}.btn-dim.btn-outline-gray{color:#3c4d62;background-color:#f1f3f5;border-color:#d3d9e0}.btn-dim.btn-outline-gray:not(:disabled):not(.disabled):hover{color:#fff;background-color:#3c4d62;border-color:#3c4d62}.btn-white.btn-outline-gray:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-gray.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-gray:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#3c4d62;background:#f1f3f5}.btn-dim.btn-outline-dark{color:#1f2b3a;background-color:#e6e8e9;border-color:#b1b5ba}.btn-dim.btn-outline-dark:not(:disabled):not(.disabled):hover{color:#fff;background-color:#1f2b3a;border-color:#1f2b3a}.btn-white.btn-outline-dark:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-outline-dark.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-dark:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#1f2b3a;background:#e6e8e9}.btn-dim.btn-outline-light,.dt-buttons .btn-dim.btn-secondary{color:#526484;background-color:#f5f6fa;border-color:#dbdfea}.btn-dim.btn-outline-light:not(:disabled):not(.disabled):hover,.dt-buttons .btn-dim.btn-secondary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#526484;border-color:#526484}.btn-white.btn-outline-light:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.btn-trans.btn-outline-light:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#526484;background:#f5f6fa}.btn-dim.btn-primary{color:#0fac81;background-color:#e5f6f1;border-color:rgba(0,0,0,0)}.btn-dim.btn-primary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#0fac81;border-color:#0fac81}.btn-dim.btn-secondary{color:#364a63;background-color:#e9ebee;border-color:rgba(0,0,0,0)}.btn-dim.btn-secondary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#364a63;border-color:#364a63}.btn-dim.btn-success{color:#1ee0ac;background-color:#e6fcf6;border-color:rgba(0,0,0,0)}.btn-dim.btn-success:not(:disabled):not(.disabled):hover{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.btn-dim.btn-warning{color:#f4bd0e;background-color:#fef8e4;border-color:rgba(0,0,0,0)}.btn-dim.btn-warning:not(:disabled):not(.disabled):hover{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.btn-dim.btn-info{color:#09c2de;background-color:#e4f8fb;border-color:rgba(0,0,0,0)}.btn-dim.btn-info:not(:disabled):not(.disabled):hover{color:#fff;background-color:#09c2de;border-color:#09c2de}.btn-dim.btn-danger{color:#e85347;background-color:#fceceb;border-color:rgba(0,0,0,0)}.btn-dim.btn-danger:not(:disabled):not(.disabled):hover{color:#fff;background-color:#e85347;border-color:#e85347}.btn-dim.btn-gray{color:#3c4d62;background-color:#eaebee;border-color:rgba(0,0,0,0)}.btn-dim.btn-gray:not(:disabled):not(.disabled):hover{color:#fff;background-color:#3c4d62;border-color:#3c4d62}.btn-dim.btn-dark{color:#1f2b3a;background-color:#e6e8e9;border-color:rgba(0,0,0,0)}.btn-dim.btn-dark:not(:disabled):not(.disabled):hover{color:#fff;background-color:#1f2b3a;border-color:#1f2b3a}.btn-dim.btn-light,.dual-listbox .btn-dim.dual-listbox__button{color:#8091a7;background-color:#f1f3f5;border-color:rgba(0,0,0,0)}.btn-dim.btn-light:not(:disabled):not(.disabled):hover,.dual-listbox .btn-dim.dual-listbox__button:not(:disabled):not(.disabled):hover{color:#fff;background-color:#8091a7;border-color:#8091a7}.btn-dim.btn-lighter{color:#b7c2d0;background-color:#f7f8fa;border-color:rgba(0,0,0,0)}.btn-dim.btn-lighter:not(:disabled):not(.disabled):hover{color:#fff;background-color:#b7c2d0;border-color:#b7c2d0}.btn-trans.btn,.dual-listbox .btn-trans.dual-listbox__button{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.btn-outline-light,.dt-buttons .btn-secondary{border-color:#dbdfea}.btn-outline-lighter{border-color:#e5e9f2}.btn-outline-light,.dt-buttons .btn-secondary,.btn-outline-lighter{color:#526484}.btn-white,.dt-buttons .btn-secondary,.btn-white.btn-dim{background:#fff}.btn-white.btn-outline-light:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#fff;background:#526484;border-color:#526484}.btn-light:focus,.dual-listbox .dual-listbox__button:focus{color:#101924;background:#b7c2d0}.btn-toolbar-sep{border-right:1px solid #e5e9f2;margin-left:.75rem;margin-right:.75rem}.card-tools .btn-toolbar-sep{padding:0 !important;margin-left:.5rem;margin-right:.5rem}.btn-group.is-tags .btn-xs:first-child{padding-left:.25rem;padding-right:.25rem}.btn-group.is-tags .btn-xs:last-child{margin-left:0}.btn-group.is-tags .btn-xs .icon{width:1rem}.btn-group.is-tags .btn-dim:not(:disabled):not(.disabled):hover{border-color:rgba(0,0,0,0)}.dropup,.dropright,.dropdown,.dropleft{display:inline-flex}.dropdown-toggle{cursor:pointer;display:inline-flex;align-items:center;margin-bottom:0}.dropdown-toggle:not([class*=indicator]):after{display:none}.clickable *{pointer-events:none}.dropdown-menu{overflow:hidden;border:1px solid #e5e9f2;box-shadow:0 3px 12px 1px rgba(7,82,61,.15)}.dropdown-inner{padding:0 1.75rem}.dropdown-inner+.dropdown-inner{border-top:1px solid #e5e9f2}.dropdown-head,.dropdown-foot{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-bottom:1px solid #e5e9f2}.dropdown-head.center,.dropdown-foot.center{justify-content:center}.dropdown-head{border-bottom:1px solid #e5e9f2}.dropdown-foot{border-top:1px solid #e5e9f2}.dropdown-body-sm{padding:.75rem}.dropdown-body-rg{padding:1.25rem}.dropdown-body-md{padding:1.5rem}.dropdown-body-lg{padding:2.25rem}.dropdown-title{font-weight:500;color:#364a63}[class*=dropdown-indicator]:after{border:none !important;font-family:"Nioicon";vertical-align:middle;content:"";margin-left:.25rem;line-height:1;display:inline-flex;align-items:center;font-size:14px}.dropup [class*=dropdown-indicator]:after{content:""}.dropdown-indicator-caret:after{content:""}.dropup .dropdown-indicator-caret:after{content:""}.dropdown-indicator-caret-up:after{content:""}.dropup .dropdown-indicator-caret-up:after{content:""}.dropdown-indicator-up:after{content:""}.dropup .dropdown-indicator-up:after{content:""}.dropdown-indicator-down:after{content:""}.dropup .dropdown-indicator-down:after{content:""}.dropdown-indicator-dubble:after{content:""}.dropup .dropdown-indicator-dubble:after{content:""}.dropdown-indicator-unfold:after{content:""}.dropup .dropdown-indicator-unfold:after{content:""}.dropdown-menu-center{left:50% !important}.dropdown-menu-bottom{bottom:0 !important}.dropdown-menu-xxs{min-width:70px;max-width:70px}.dropdown-menu-xxs.dropdown-menu-center{margin-left:35px}.dropdown-menu-xs{min-width:120px;max-width:120px}.dropdown-menu-xs.dropdown-menu-center{margin-left:60px}.dropdown-menu-md{min-width:280px;max-width:280px}.dropdown-menu-md.dropdown-menu-center{margin-left:140px}.dropdown-menu-sm{min-width:140px;max-width:140px}.dropdown-menu-sm.dropdown-menu-center{margin-left:-70px}.dropdown-menu-lg{min-width:320px;max-width:320px}.dropdown-menu-lg.dropdown-menu-center{margin-left:-160px}.dropdown-menu-xl{min-width:360px;max-width:360px}.dropdown-menu-xl.dropdown-menu-center{margin-left:-180px}.dropdown-menu-auto{min-width:100%;max-width:100%}.dropdown-menu-mxh{max-height:400px;overflow:auto}.nk-quick-nav .dropdown-menu{margin-top:11px !important;margin-right:-6px !important}@media(max-width: 420px){.dropdown-menu-xl,.dropdown-menu-lg,.dropdown-menu-md{min-width:calc(100vw - 40px);max-width:calc(100vw - 40px)}.nk-quick-nav .dropdown-menu-xl,.nk-quick-nav .dropdown-menu-lg,.nk-quick-nav .dropdown-menu-md{margin-right:-21px !important}.nk-quick-nav li:last-child .dropdown-menu-xl,.nk-quick-nav li:last-child .dropdown-menu-lg,.nk-quick-nav li:last-child .dropdown-menu-md{margin-right:0 !important}}.dropdown-menu-s1{border-top:3px solid #0fac81}.dropdown-toggle-split>.icon{margin-left:-0.25rem;margin-right:-0.25rem}.card+.card:not(.card .card+.card){margin-top:28px}.card+.nk-block-head{padding-top:2.5rem}.card-full{height:100%}.card.is-dark{background:#07523d}.card-bordered{border:1px solid #dbdfea}.card-bordered.is-dark{border-color:#07523d}.card-bordered.dashed{border-style:dashed}.card-inner{padding:1.25rem}.card-inner-sm{padding-top:.75rem;padding-bottom:.75rem}.card-inner-group .card-inner:not(:last-child){border-bottom:1px solid #dbdfea}.card-head{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;margin:-0.25rem -0.5rem 1rem}.card-head>*{padding:.25rem .5rem}.card-head>.title:only-child{width:100%}.card-title-group{display:flex;align-items:center;justify-content:space-between;position:relative}.card-title-group .card-title{margin-bottom:0}.card-title-group:only-child,.card-title-group .card-search{margin-top:-0.25rem;margin-bottom:-0.25rem}.card-title h6.title:not(:last-child),.card-title .title.h6:not(:last-child){margin-bottom:.25rem}.card-title p{font-size:12px;color:#8094ae}.card-title p .icon{line-height:inherit;vertical-align:middle}.card-title-sm .title{font-size:14px}.card-title small,.card-title .small{font-weight:500;color:#8094ae}.card-subtitle{color:#8094ae;font-family:Roboto,sans-serif;font-weight:normal}.card-tools-nav{display:flex;margin:-6px -10px -5px}.card-tools-nav li{padding:0 10px}.card-tools-nav li a{position:relative;color:#8094ae;padding:10px 0;display:block;line-height:1}.card-tools-nav li a:before{position:absolute;bottom:0;left:0;right:0;height:2px;content:"";background:#0fac81;opacity:0}.card-tools-nav li a:hover,.card-tools-nav li a.active{color:#526484}.card-tools-nav li a.active::before{opacity:1}.card-tools-nav li.active a{color:#526484}.card-tools-nav li.active a::before{opacity:1}.card-tools.me-n1{margin-right:-0.5rem !important}.card-hint{font-size:1rem;color:#dbdfea}@media(max-width: 575.98px){.card-head.ui-v2 .card-tools{width:calc(100% + 20px);margin:0 -10px;padding-top:.5rem}.card-head.ui-v2 .card-tools-nav{padding:0 .75rem;border-bottom:1px solid #e5e9f2}.card-head.ui-v2 .card-tools-nav li a{padding-bottom:1rem}.card-stretch{margin-left:-18px;margin-right:-18px;border-left:0 !important;border-right:0 !important;border-radius:0 !important}}@media(min-width: 576px){.card-inner{padding:1.5rem}.card-inner-sm{padding-top:.75rem;padding-bottom:.75rem}.card-inner-md{padding-top:1rem;padding-bottom:1rem}.card-header{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width: 768px){.card-inner-lg{padding:2.5rem}.card-inner-xl{padding:3.75rem}}.form-icon{position:absolute;display:inline-flex;justify-content:center;align-items:center;top:0;width:calc(1rem + 24px);height:calc(2.125rem + 2px)}.form-icon.sm{height:calc(1.75rem + 2px)}.form-icon.lg{height:calc(2.625rem + 2px)}.form-icon.xl{height:calc(3.25rem + 2px)}.form-icon .icon{font-size:16px;color:#8094ae}.form-icon+.form-control,.dual-listbox .form-icon+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .form-icon+input{padding-left:calc(1rem + 24px)}.form-icon-right{left:auto;right:-1px}.form-icon-right+.form-control,.dual-listbox .form-icon-right+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .form-icon-right+input{padding-left:1rem;padding-right:calc(1rem + 24px)}.form-info{position:absolute;display:inline-flex;justify-content:center;align-items:center;border-left:1px solid #dbdfea;right:0;top:50%;padding:.125rem 1.25rem;transform:translateY(-50%);color:#8094ae}.form-info+.form-control,.dual-listbox .form-info+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .form-info+input{padding-right:calc(1rem + 24px)}.form-label{font-size:.875rem;font-weight:500;color:#344357;margin-bottom:.5rem}.form-label-group{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.form-label-group .form-label{margin-bottom:0}.form-label+.form-note{margin-top:-0.35rem}.form-label-outlined{position:absolute;top:.4375rem;left:.6666666667rem;transform-origin:left;padding:0 .4rem;font-weight:400;line-height:1.25rem;color:#3c4d62;background-color:#fff;z-index:1;transition:all .3s ease;margin-bottom:0;font-size:0.8125rem}.form-control-lg~.form-label-outlined{top:.6875rem;padding:0 .3773584906rem;font-size:0.9375rem}.form-control-sm~.form-label-outlined{font-size:0.75rem;top:.25rem;left:.4rem}.focused .form-control-sm~.form-label-outlined,.js-select2.form-control-sm~.form-label-outlined{font-size:11px}.focused .form-label-outlined,.js-select2~.form-label-outlined{top:calc(-0.4375rem + -2px);font-size:11px}.form-control-xl~.form-label-outlined{font-size:0.9375rem;line-height:2rem;top:.625rem;padding:0 .5rem;left:.8333333333rem}.focused .form-control-xl~.form-label-outlined,.js-select2.form-control-xl~.form-label-outlined{top:calc(-0.625rem + -5px)}.focused .form-control-lg~.form-label-outlined,.focused .form-control-xl~.form-label-outlined,.js-select2.form-control-lg~.form-label-outlined,.js-select2.form-control-xl~.form-label-outlined{font-size:12px}.form-note{font-size:12px;color:#8094ae;font-style:italic;display:block}.form-note-alt{font-size:12px;color:#8094ae}.form-note-group{display:flex;justify-content:space-between;margin-top:.5rem;margin-bottom:-0.25rem}.form-control-xl{height:calc(3.25rem + 2px) !important;padding:.625rem 1.25rem;font-size:0.9375rem;line-height:2rem;border-radius:5px}.form-control-outlined{cursor:pointer}.focused .form-control-outlined{cursor:auto}.form-control-wrap,.form-control-group{position:relative}.form-control-wrap+.form-note,.form-control-group+.form-note{margin-top:.5rem}.form-control-noborder{border-color:rgba(0,0,0,0)}.form-control-noborder:focus{border-color:#dbdfea;box-shadow:none}.form-control-solid{border-color:#fff}.form-control-solid:focus{box-shadow:none;border-color:#dbdfea}.form-control-number{font-size:20px;padding:20px;height:74px}.form-control-password-big{font-size:44px;height:calc(1rem*2 + 1.25rem + 1px);padding:1rem 1rem}.form-control.error,.dual-listbox .error.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input.error{border-color:#e85347}.form-control.error:focus,.dual-listbox .error.dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter input.error:focus{box-shadow:0 0 0 3px rgba(232,83,71,.1)}.form-control.focus,.dual-listbox .focus.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input.focus{border-color:#0fac81;box-shadow:0 0 0 3px rgba(15,172,129,.1)}.form-control-simple{border:none;padding:0}.form-control-simple:focus{box-shadow:none}.form-group{position:relative;margin-bottom:1.25rem}.form-group:last-child{margin-bottom:0}.form-focus-none:focus{border-color:rgba(0,0,0,0);box-shadow:none}.form-action .btn+.btn,.form-action .dual-listbox .dual-listbox__button+.btn,.dual-listbox .form-action .dual-listbox__button+.btn,.form-action .dual-listbox .btn+.dual-listbox__button,.dual-listbox .form-action .btn+.dual-listbox__button,.form-action .dual-listbox .dual-listbox__button+.dual-listbox__button,.dual-listbox .form-action .dual-listbox__button+.dual-listbox__button{margin-left:1.25rem}.form-round{border-radius:100px}.form-select{appearance:none;-webkit-appearance:none}.form-select option{border-radius:3px;padding:5px .5rem;margin:2px -0.5rem;cursor:pointer;color:#526484}.form-select option:last-child{margin-bottom:-0.5rem}.form-control-select{position:relative}.form-control-select .form-control,.form-control-select .dual-listbox .dual-listbox__search,.dual-listbox .form-control-select .dual-listbox__search,.form-control-select div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .form-control-select input{appearance:none;-webkit-appearance:none}.form-control-select-multiple .js-select2{padding-top:.375rem;padding-bottom:.875rem}.form-control-select-multiple .js-select2 option{border-radius:3px;padding:5px .5rem;margin:2px -0.5rem;cursor:pointer;color:#526484}.form-control-select-multiple .js-select2 option:last-child{margin-bottom:-0.5rem}.form-control-select:after{font-family:"Nioicon";content:"";pointer-events:none;position:absolute;display:inline-flex;justify-content:center;align-items:center;right:0;top:50%;transform:translateY(-50%);width:calc(1rem + 12px);height:calc(1rem + 12px)}textarea.no-resize{resize:none}textarea.form-control,.dual-listbox textarea.dual-listbox__search{min-height:122px;padding-top:.65625rem}textarea.textarea-sm{min-height:92px}textarea.textarea-lg{min-height:208px}textarea.textarea-auto{min-height:0}.form-file-input~.error,.form-file-input~.invalid,.form-control~.error,.dual-listbox .dual-listbox__search~.error,div.dataTables_wrapper div.dataTables_filter input~.error,.form-control~.invalid,.dual-listbox .dual-listbox__search~.invalid,div.dataTables_wrapper div.dataTables_filter input~.invalid,.input-gruop~.error,.input-gruop~.invalid{color:#e85347;font-size:11px;font-style:italic}.custom-btn-check{position:relative}.custom-btn-check input{position:absolute;opacity:0;height:1px;width:1px}.custom-btn-check input:checked~label{color:#fff;border-color:#0fac81;background-color:#0fac81}.custom-btn-check label{display:inline-block;border:2px solid #e5e9f2;background-color:#e5e9f2;font-weight:500;color:#526484;text-align:center;padding:.4375rem 1.125rem;font-size:.8125rem;line-height:1.25rem;border-radius:4px;transition:all .3s;margin-bottom:0 !important}.custom-btn-sm label{padding:.25rem 1rem;font-size:.75rem;line-height:1.25rem}.custom-btn-round label{border-radius:60px}.custom-btn-outline label{background-color:rgba(0,0,0,0)}.form-select[multiple],.form-select[size]:not([size="1"]){height:122px}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-control,.dual-listbox .dual-listbox__search,div.dataTables_wrapper div.dataTables_filter input{height:calc(2.125rem + 2px)}.custom-control{position:relative;z-index:1;display:inline-flex;min-height:1.5rem;padding-left:2.25rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1.5rem;height:1.471875rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#0fac81;background-color:#0fac81;box-shadow:none}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 3px rgba(15,172,129,.1)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#0fac81}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#0fac81;border-color:#0fac81;box-shadow:none}.custom-control-input[disabled]~.custom-control-label,.custom-control-input:disabled~.custom-control-label{color:#3c4d62}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before,.custom-control-label:after{z-index:1}.custom-control-label::before{position:absolute;top:-.028125rem;left:-2.25rem;display:block;width:1.5rem;height:1.5rem;pointer-events:none;content:"";background-color:#fff;border:#dbdfea solid 2px;box-shadow:inset 0 1px 1px rgba(16,25,36,.075);border-radius:4px}.custom-control-label::after{position:absolute;top:-.028125rem;left:-2.25rem;display:block;width:1.5rem;height:1.5rem;content:"";background:no-repeat 50%/50% 50%}.custom-control{display:inline-flex;min-height:1.5rem}.custom-control.color-control{padding:4px !important}.custom-control.color-control .custom-control-label::before{opacity:0;display:block;left:-4px;right:-4px;top:-4px;bottom:-4px;border-radius:50%;border:2px solid #0fac81 !important;background:rgba(0,0,0,0) !important;transition:.3s ease}.custom-control.color-control .custom-control-label::after{display:none}.custom-control.color-control .custom-control-input:checked~.custom-control-label::before{opacity:1}.custom-control.notext{margin-left:-0.75rem}.custom-control.notext .custom-control-label{position:relative;left:.75rem}.custom-control-label{font-size:14px;line-height:1.25rem;padding-top:.125rem}.custom-control-label::before,.custom-control-label::after{top:0}.custom-control-label:after{display:inline-flex;align-items:center;justify-content:center;background-image:none !important;font-family:"Nioicon";color:#fff;opacity:0}.custom-checkbox .custom-control-label:after{content:""}.custom-radio .custom-control-label:after{content:""}.custom-control .custom-control-input:checked~.custom-control-label::after{opacity:1}.custom-control .custom-control-input[disabled]~.custom-control-label,.custom-control .custom-control-input:disabled~.custom-control-label{opacity:.7;color:#364a63}.custom-control-sm{min-height:1.125rem;padding-left:1.625rem}.custom-control-sm.notext{margin-left:-0.5rem}.custom-control-sm.notext .custom-control-label{left:.5rem}.custom-control-sm .custom-control-label{font-size:12px;line-height:1.125rem;padding-top:0}.custom-control-sm .custom-control-label::before,.custom-control-sm .custom-control-label::after{left:-1.625rem;width:1.125rem;height:1.125rem}.custom-control-sm .custom-control-label:after{font-size:.9em}.custom-control-lg{min-height:2rem;padding-left:3rem}.custom-control-lg.notext{margin-left:-1rem}.custom-control-lg.notext .custom-control-label{left:1rem}.custom-control-lg .custom-control-label{font-size:15px;line-height:1.375rem;padding-top:.3125rem}.custom-control-lg .custom-control-label::before,.custom-control-lg .custom-control-label::after{left:-3rem;width:2rem;height:2rem}.custom-control-lg .custom-control-label:after{font-size:1.2em}.custom-control-input{position:absolute;height:1px;width:1px;opacity:0}.custom-control.is-right{padding-left:0;padding-right:2.25rem}.custom-control.is-right .custom-control-label:before,.custom-control.is-right .custom-control-label:after{left:auto;right:-2.25rem}.custom-control.is-right.custom-control-sm{padding-right:1.625rem}.custom-control.is-right.custom-control-sm .custom-control-label:before,.custom-control.is-right.custom-control-sm .custom-control-label:after{right:-1.625rem}.custom-control.is-right.custom-control-lg{padding-right:3rem}.custom-control.is-right.custom-control-lg .custom-control-label:before,.custom-control.is-right.custom-control-lg .custom-control-label:after{right:-3rem}.custom-file-label{white-space:nowrap;overflow:hidden}.custom-select,div.dataTables_wrapper div.dataTables_length select{background:#fff}.custom-control-group{display:inline-flex;align-items:center;flex-wrap:wrap;margin:-0.375rem}.custom-control-group>*{padding:.375rem}.custom-control-stacked{margin:0}.custom-control-stacked>*{padding:0;margin:-1px}.custom-control-stacked:not(.custom-control-vertical)>*:not(:first-child) .custom-control-label{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control-stacked:not(.custom-control-vertical)>*:not(:last-child) .custom-control-label{border-top-right-radius:0;border-bottom-right-radius:0}.custom-control-vertical{flex-direction:column;align-items:start}.custom-control-vertical>*{width:100%}.custom-control-vertical .custom-control{display:flex}.custom-control-vertical .custom-control .custom-control-label{width:100%}.custom-control-vertical.custom-control-stacked>*:not(:first-child) .custom-control-label{border-top-left-radius:0;border-top-right-radius:0}.custom-control-vertical.custom-control-stacked>*:not(:last-child) .custom-control-label{border-bottom-left-radius:0;border-bottom-right-radius:0}.custom-control-pro{padding-left:0;position:relative}.custom-control-pro.no-control.checked{z-index:3}.custom-control-pro.no-control.focused{z-index:2}.custom-control-pro.no-control .custom-control-label{padding:.375rem 1.125rem;border-width:2px}.custom-control-pro.no-control .custom-control-input:checked~.custom-control-label{border-color:#0fac81;box-shadow:none;z-index:2}.custom-control-pro.no-control .custom-control-input:not(:disabled):active~.custom-control-label{border-color:#0fac81;box-shadow:none}.custom-control-pro.no-control .custom-control-input[disabled]~.custom-control-label,.custom-control-pro.no-control .custom-control-input:disabled~.custom-control-label{color:#3c4d62}.custom-control-pro-block.custom-control{display:flex}.custom-control-pro-block .custom-control-label{width:100%}.custom-control-pro .custom-control-label{border:1px solid #e5e9f2;padding:1.125rem 1.125rem 1.125rem 3.375rem;font-size:13px;line-height:1.25rem;border-radius:4px;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:inline-flex;align-items:center;background-color:#fff}.custom-control-pro .custom-control-label::before,.custom-control-pro .custom-control-label::after{top:50%;transform:translateY(-50%);left:1.125rem}.custom-control-pro .custom-control-label .icon{font-size:1.4em;line-height:inherit}.custom-control-pro .custom-control-label .icon-lg{font-size:2.2em}.custom-control-pro .custom-control-label>span{white-space:nowrap}.custom-control-pro .custom-control-label>span:only-child{width:100%}.custom-control-pro .custom-control-label .icon+span,.custom-control-pro .custom-control-label span+.icon{padding-left:8px}.custom-control-pro.custom-control-sm{padding-left:0}.custom-control-pro.custom-control-sm .custom-control-label{padding:.6875rem 1.125rem .6875rem 3rem;font-size:13px;line-height:1.25rem;border-radius:4px}.custom-control-pro.custom-control-sm .custom-control-label::before,.custom-control-pro.custom-control-sm .custom-control-label::after{top:50%;transform:translateY(-50%);left:1.125rem}.custom-control-pro-icon.custom-control-pro .custom-control-label{padding-left:0;padding-right:0}.custom-control-pro-icon.custom-control-pro .custom-control-label .icon{text-align:center;width:2.125rem}.no-control{padding-left:0}.no-control .custom-control-label::before,.no-control .custom-control-label::after{display:none}+.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:#0fac81}+.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:#0fac81}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:#0fac81}.image-control.custom-control{padding-left:0}.image-control .custom-control-input:checked~.custom-control-label:before{border-color:#fff}.image-control .custom-control-input:checked~.custom-control-label img{opacity:.8}.image-control .custom-control-label{padding-top:0;border-radius:4px;overflow:hidden;background-color:#1f2b3a}.image-control .custom-control-label img{transition:opacity .3s ease}.image-control .custom-control-label:before,.image-control .custom-control-label:after{z-index:9}.image-control .custom-control-label::before{border-width:1px;top:1rem;left:1rem}.image-control .custom-control-label::after{top:1rem;left:1rem}.image-control:hover .custom-control-label img{opacity:.8}.custom-switch{padding-left:3.75rem}.custom-switch .custom-control-label::before{left:-3.75rem;width:3rem;border-radius:1.5rem;pointer-events:all}.custom-switch .custom-control-label::after{opacity:1;top:.25rem;left:-3.5rem;width:1rem;height:1rem;border-radius:1.5rem;background-color:#dbdfea;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:#0fac81}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(1.5rem)}.custom-switch.custom-control-sm{padding-left:2.46875rem}.custom-switch.custom-control-sm .custom-control-label::before{left:-2.46875rem;width:1.96875rem;border-radius:.984375rem}.custom-switch.custom-control-sm .custom-control-label::after{top:.2375rem;left:calc(-2.46875rem + 4px);width:.65rem;height:.65rem;border-radius:.984375rem}.custom-switch.custom-control-sm .custom-control-input:checked~.custom-control-label::after{transform:translateX(calc(1.31875rem - 8px))}.custom-switch.custom-control-lg{padding-left:5rem}.custom-switch.custom-control-lg .custom-control-label::before{left:-5rem;width:4rem;border-radius:2rem}.custom-switch.custom-control-lg .custom-control-label::after{top:.375rem;left:calc(-5rem + 6px);width:1.25rem;height:1.25rem;border-radius:2rem}.custom-switch.custom-control-lg .custom-control-input:checked~.custom-control-label::after{transform:translateX(calc(2.75rem - 12px))}.custom-switch.is-right{padding-left:0;padding-right:3.75rem}.custom-switch.is-right .custom-control-label:before,.custom-switch.is-right .custom-control-label:after{left:auto;right:-2.25rem}.custom-switch.is-right .custom-control-label::before{right:-3.75rem}.custom-switch.is-right .custom-control-label::after{right:calc(-3.75rem + 4px)}.custom-switch.is-right .custom-control-input:checked~.custom-control-label::after{transform:translateX(calc(-2rem + 8px))}.custom-switch.is-right.custom-control-sm{padding-right:2.46875rem}.custom-switch.is-right.custom-control-sm .custom-control-label::before{right:-2.46875rem}.custom-switch.is-right.custom-control-sm .custom-control-label::after{right:calc(-2.46875rem + 4px)}.custom-switch.is-right.custom-control-sm .custom-control-input:checked~.custom-control-label::after{transform:translateX(calc(-1.31875rem + 8px))}.custom-switch.is-right.custom-control-lg{padding-right:5rem}.custom-switch.is-right.custom-control-lg .custom-control-label::before{right:-5rem}.custom-switch.is-right.custom-control-lg .custom-control-label::after{right:calc(-5rem + 6px)}.custom-switch.is-right.custom-control-lg .custom-control-input:checked~.custom-control-label::after{transform:translateX(calc(-2.75rem + 12px))}label{cursor:pointer}input[type=radio]:checked~label{cursor:default}.is-alter .form-control~,.is-alter .dual-listbox .dual-listbox__search~,.dual-listbox .is-alter .dual-listbox__search~,.is-alter div.dataTables_wrapper div.dataTables_filter input~,div.dataTables_wrapper div.dataTables_filter .is-alter input~,.is-alter .input-group~,.custom-control{position:relative}.is-alter .form-control~.invalid,.is-alter .dual-listbox .dual-listbox__search~.invalid,.dual-listbox .is-alter .dual-listbox__search~.invalid,.is-alter div.dataTables_wrapper div.dataTables_filter input~.invalid,div.dataTables_wrapper div.dataTables_filter .is-alter input~.invalid,.is-alter .input-group~.invalid,.custom-control .invalid{position:absolute;left:0;color:#fff;font-size:11px;line-height:1;bottom:calc(100% + 4px);background:#ed756b;padding:.3rem .5rem;z-index:1;border-radius:3px;white-space:nowrap}.is-alter .form-control~.invalid:before,.is-alter .dual-listbox .dual-listbox__search~.invalid:before,.dual-listbox .is-alter .dual-listbox__search~.invalid:before,.is-alter div.dataTables_wrapper div.dataTables_filter input~.invalid:before,div.dataTables_wrapper div.dataTables_filter .is-alter input~.invalid:before,.is-alter .input-group~.invalid:before,.custom-control .invalid:before{position:absolute;content:"";height:0;width:0;border-left:6px solid #ed756b;border-right:6px solid rgba(0,0,0,0);left:10px;border-bottom:6px solid rgba(0,0,0,0);bottom:-6px}.is-alter .form-control~.invalid,.is-alter .dual-listbox .dual-listbox__search~.invalid,.dual-listbox .is-alter .dual-listbox__search~.invalid,.is-alter div.dataTables_wrapper div.dataTables_filter input~.invalid,div.dataTables_wrapper div.dataTables_filter .is-alter input~.invalid,.is-alter .input-group~.invalid{left:auto;right:0}.is-alter .form-control~.invalid::before,.is-alter .dual-listbox .dual-listbox__search~.invalid::before,.dual-listbox .is-alter .dual-listbox__search~.invalid::before,.is-alter div.dataTables_wrapper div.dataTables_filter input~.invalid::before,div.dataTables_wrapper div.dataTables_filter .is-alter input~.invalid::before,.is-alter .input-group~.invalid::before{left:auto;right:10px;border-right-color:#ed756b;border-left-color:rgba(0,0,0,0);bottom:-4px}.form-file{position:relative;display:inline-block;width:100%;height:calc(2.125rem + 2px);margin-bottom:0}.form-file-input{position:relative;z-index:2;width:100%;height:calc(2.125rem + 2px);margin:0;opacity:0}.form-file-input:focus~.form-file-label{border-color:#0fac81;box-shadow:0 0 0 3px rgba(15,172,129,.1)}.form-file-input[disabled]~.form-file-label,.form-file-input:disabled~.form-file-label{background-color:#f5f6fa}.form-file-input:lang(en)~.form-file-label::after{content:"Browse"}.form-file-input~.form-file-label[data-browse]::after{content:attr(data-browse)}.form-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.125rem + 2px);padding:.4375rem 1rem;font-weight:400;line-height:1.25rem;color:#3c4d62;background-color:#fff;border:1px solid #dbdfea;border-radius:4px}.form-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.125rem;padding:.4375rem 1rem;line-height:1.25rem;color:#3c4d62;content:"Browse";background-color:#ebeef2;border-left:inherit;border-radius:0 4px 4px 0}.input-group>.form-control,.dual-listbox .input-group>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>input,.input-group>.form-control-plaintext,.input-group>.custom-select,div.dataTables_wrapper div.dataTables_length .input-group>select,.input-group>.form-file{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.dual-listbox .input-group>.dual-listbox__search+.form-control,.dual-listbox .input-group>.form-control+.dual-listbox__search,.dual-listbox .input-group>.dual-listbox__search+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>input+.form-control,div.dataTables_wrapper div.dataTables_filter .dual-listbox .input-group>input+.dual-listbox__search,.dual-listbox div.dataTables_wrapper div.dataTables_filter .input-group>input+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>.form-control+input,div.dataTables_wrapper div.dataTables_filter .dual-listbox .input-group>.dual-listbox__search+input,.dual-listbox div.dataTables_wrapper div.dataTables_filter .input-group>.dual-listbox__search+input,div.dataTables_wrapper div.dataTables_filter .input-group>input+input,.input-group>.form-control+.custom-select,.dual-listbox .input-group>.dual-listbox__search+.custom-select,div.dataTables_wrapper div.dataTables_filter .input-group>input+.custom-select,div.dataTables_wrapper div.dataTables_length .input-group>.form-control+select,div.dataTables_wrapper div.dataTables_length .dual-listbox .input-group>.dual-listbox__search+select,.dual-listbox div.dataTables_wrapper div.dataTables_length .input-group>.dual-listbox__search+select,div.dataTables_wrapper div.dataTables_length div.dataTables_filter .input-group>input+select,div.dataTables_wrapper div.dataTables_filter div.dataTables_length .input-group>input+select,.input-group>.form-control+.form-file,.dual-listbox .input-group>.dual-listbox__search+.form-file,div.dataTables_wrapper div.dataTables_filter .input-group>input+.form-file,.input-group>.form-control-plaintext+.form-control,.dual-listbox .input-group>.form-control-plaintext+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>.form-control-plaintext+input,.input-group>.form-control-plaintext+.custom-select,div.dataTables_wrapper div.dataTables_length .input-group>.form-control-plaintext+select,.input-group>.form-control-plaintext+.form-file,.input-group>.custom-select+.form-control,.dual-listbox .input-group>.custom-select+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>.custom-select+input,div.dataTables_wrapper div.dataTables_length .input-group>select+.form-control,div.dataTables_wrapper div.dataTables_length .dual-listbox .input-group>select+.dual-listbox__search,.dual-listbox div.dataTables_wrapper div.dataTables_length .input-group>select+.dual-listbox__search,div.dataTables_wrapper div.dataTables_length div.dataTables_filter .input-group>select+input,div.dataTables_wrapper div.dataTables_filter div.dataTables_length .input-group>select+input,.input-group>.custom-select+.custom-select,div.dataTables_wrapper div.dataTables_length .input-group>select+.custom-select,div.dataTables_wrapper div.dataTables_length .input-group>.custom-select+select,div.dataTables_wrapper div.dataTables_length .input-group>select+select,.input-group>.custom-select+.form-file,div.dataTables_wrapper div.dataTables_length .input-group>select+.form-file,.input-group>.form-file+.form-control,.dual-listbox .input-group>.form-file+.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group>.form-file+input,.input-group>.form-file+.custom-select,div.dataTables_wrapper div.dataTables_length .input-group>.form-file+select,.input-group>.form-file+.form-file{margin-left:-1px}.input-group>.form-control:focus,.dual-listbox .input-group>.dual-listbox__search:focus,div.dataTables_wrapper div.dataTables_filter .input-group>input:focus,.input-group>.custom-select:focus,div.dataTables_wrapper div.dataTables_length .input-group>select:focus,.input-group>.form-file .form-file-input:focus~.form-file-label{z-index:3}.input-group>.form-file .form-file-input:focus{z-index:4}.input-group>.form-control:not(:last-child),.dual-listbox .input-group>.dual-listbox__search:not(:last-child),div.dataTables_wrapper div.dataTables_filter .input-group>input:not(:last-child),.input-group>.custom-select:not(:last-child),div.dataTables_wrapper div.dataTables_length .input-group>select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.dual-listbox .input-group>.dual-listbox__search:not(:first-child),div.dataTables_wrapper div.dataTables_filter .input-group>input:not(:first-child),.input-group>.custom-select:not(:first-child),div.dataTables_wrapper div.dataTables_length .input-group>select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-file{display:flex;align-items:center}.input-group>.form-file:not(:last-child) .form-file-label,.input-group>.form-file:not(:last-child) .form-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-file:not(:first-child) .form-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-prepend .dual-listbox .dual-listbox__button,.dual-listbox .input-group-prepend .dual-listbox__button,.input-group-append .btn,.input-group-append .dual-listbox .dual-listbox__button,.dual-listbox .input-group-append .dual-listbox__button{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-prepend .dual-listbox .dual-listbox__button:focus,.dual-listbox .input-group-prepend .dual-listbox__button:focus,.input-group-append .btn:focus,.input-group-append .dual-listbox .dual-listbox__button:focus,.dual-listbox .input-group-append .dual-listbox__button:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .dual-listbox .dual-listbox__button+.btn,.dual-listbox .input-group-prepend .dual-listbox__button+.btn,.input-group-prepend .dual-listbox .btn+.dual-listbox__button,.dual-listbox .input-group-prepend .btn+.dual-listbox__button,.input-group-prepend .dual-listbox .dual-listbox__button+.dual-listbox__button,.dual-listbox .input-group-prepend .dual-listbox__button+.dual-listbox__button,.input-group-prepend .btn+.input-group-text,.input-group-prepend .dual-listbox .dual-listbox__button+.input-group-text,.dual-listbox .input-group-prepend .dual-listbox__button+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .dual-listbox .input-group-text+.dual-listbox__button,.dual-listbox .input-group-prepend .input-group-text+.dual-listbox__button,.input-group-append .btn+.btn,.input-group-append .dual-listbox .dual-listbox__button+.btn,.dual-listbox .input-group-append .dual-listbox__button+.btn,.input-group-append .dual-listbox .btn+.dual-listbox__button,.dual-listbox .input-group-append .btn+.dual-listbox__button,.input-group-append .dual-listbox .dual-listbox__button+.dual-listbox__button,.dual-listbox .input-group-append .dual-listbox__button+.dual-listbox__button,.input-group-append .btn+.input-group-text,.input-group-append .dual-listbox .dual-listbox__button+.input-group-text,.dual-listbox .input-group-append .dual-listbox__button+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .dual-listbox .input-group-text+.dual-listbox__button,.dual-listbox .input-group-append .input-group-text+.dual-listbox__button{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-lg>.form-control,.dual-listbox .input-group-lg>.dual-listbox__search,div.dataTables_wrapper div.dataTables_filter .input-group-lg>input,.input-group-lg>.custom-select,div.dataTables_wrapper div.dataTables_length .input-group-lg>select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.dual-listbox .input-group-lg>.input-group-prepend>.dual-listbox__button,.input-group-lg>.input-group-append>.btn,.dual-listbox .input-group-lg>.input-group-append>.dual-listbox__button{font-size:15px}.input-group>.input-group-prepend>.btn,.dual-listbox .input-group>.input-group-prepend>.dual-listbox__button,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.dual-listbox .input-group>.input-group-append:not(:last-child)>.dual-listbox__button,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.dual-listbox .input-group>.input-group-append:last-child>.dual-listbox__button:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.dual-listbox .input-group>.input-group-append>.dual-listbox__button,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.dual-listbox .input-group>.input-group-prepend:not(:first-child)>.dual-listbox__button,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.dual-listbox .input-group>.input-group-prepend:first-child>.dual-listbox__button:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-select,div.dataTables_wrapper div.dataTables_length select{height:calc(2.125rem + 2px);padding:.4375rem 2rem .4375rem 1rem !important;font-size:.8125rem;font-weight:400;line-height:1.25rem;color:#3c4d62;vertical-align:middle;border:1px solid #dbdfea;border-radius:4px;appearance:none}.table-striped tbody tr:nth-of-type(odd){background-color:#f5f6fa}.table>:not(caption)>*>*{border-top:1px solid #dbdfea;border-bottom:0}.table-hover tbody tr:hover{color:#526484;background-color:#f5f6fa}.table-head{background:#f5f6fa}.table>:not(:first-child){border-top:none}.table thead tr:last-child th{border-bottom:1px solid #dbdfea}.table-dark thead tr:last-child th,.table thead.thead-dark tr:last-child th{border-color:#3c4d62}.table td:first-child,.table th:first-child{padding-left:1.25rem}.table td:last-child,.table th:last-child{padding-right:1.25rem}.table th{line-height:1.1}.table th.overline-title{line-height:1.25rem;font-weight:500}.table caption{font-style:italic;padding-left:1.25rem}.table-bordered td,.table-bordered th{padding-left:1rem;padding-right:1rem}.table-plain td:first-child,.table-plain th:first-child{padding-left:0}.table-plain td:last-child,.table-plain th:last-child{padding-right:0}.table-lg td{padding-top:1rem;padding-bottom:1rem}.table-lg th{padding-top:.75rem;padding-bottom:.75rem}.table-vm td,.table-vm th,.table td.vm,.table th.vm{vertical-align:middle}@media(min-width: 576px){.table-lg td:first-child,.table-lg th:first-child{padding-left:1.5rem}.table-lg td:last-child,.table-lg th:last-child{padding-right:1.5rem}}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table>:not(caption)>*>*{box-shadow:none}.table-sm th,.table-sm td{padding:.25rem}.table .table-light th{color:#364a63 !important;background-color:#f5f6fa;border:#dbdfea}.media{display:flex}.media-center{align-items:center}.media-object{display:inline-flex}.media>*:first-child{flex-shrink:0}.media>*:last-child{flex-grow:1;max-width:100%}.nav{margin:-0.5rem -1rem}.nav .nav-link{display:inline-flex;align-items:center}.nav .nav-link .icon+span,.nav .nav-link span+.icon{margin-left:.75rem}.nav .nav-link .icon{font-size:1.3em}.nav-tabs{font-family:Nunito,sans-serif;margin:0;font-size:.8125rem;border-bottom:1px solid #dbdfea}.nav-tabs-s2{border-bottom:none;justify-content:center}.nav-tabs+.tab-content{margin-top:1.25rem}.nav-tabs .nav-item{padding-right:1.25rem}.nav-tabs .nav-item:last-child{padding-right:0}.nav-tabs .nav-item.active .nav-link{color:#0fac81}.nav-tabs .nav-item.active .nav-link:after{opacity:1}.nav-tabs .nav-link{padding:1rem 0;font-weight:700;color:#526484;position:relative;border:none;outline:none;display:inline-flex;align-items:center}.nav-tabs .nav-link .icon{font-size:1.4em}.nav-tabs .nav-link .icon+span{margin-left:.5rem}.nav-tabs .nav-link .badge{margin-left:.25rem}.nav-tabs .nav-link:hover{color:#364a63}.nav-tabs .nav-link:focus{color:#0fac81}.nav-tabs .nav-link:before,.nav-tabs .nav-link:after{position:absolute;content:""}.nav-tabs .nav-link:after{left:0;right:0;bottom:0;height:3px;background:#0fac81;opacity:0}.nav-tabs .nav-link.active{color:#0fac81;border:none;background-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active:after{opacity:1}.nav-sm{font-size:.8125rem}@media(min-width: 768px){.nav-tabs .nav-item{padding-right:1.5rem}.nav-tabs-sm .nav-item{padding-right:1.25rem}}@media(min-width: 992px){.nav-tabs .nav-item{padding-right:1.75rem}.nav-tabs-sm .nav-item{padding-right:1.25rem}.nav-tabs .nav-link{font-size:.875rem}}@media(min-width: 1200px){.nav-tabs .nav-item{padding-right:2.25rem}.nav-tabs-sm .nav-item{padding-right:1.25rem}}@media(max-width: 575.98px){.nav-tabs.is-stretch{margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}}.nav-item-trigger{display:inline-flex;align-items:center;margin:-1px -0.5rem 0 auto}.nav-tabs-card{padding-left:1.25rem;padding-right:1.25rem;font-family:Roboto,sans-serif}@media(min-width: 576px){.nav-tabs-card{padding-left:1.5rem;padding-right:1.5rem}}@media(max-width: 767.98px){.nav-tabs-mb-icon .nav-item{padding-right:.75rem}.nav-tabs-mb-icon .nav-link .icon{font-size:1.25rem;padding:0 .5rem}.nav-tabs-mb-icon .nav-link .icon+span{display:none}}@media(max-width: 359px){.nav-tabs-mb-icon .nav-item{padding-right:.35rem}}.is-medium.nav-tabs .nav-link{padding:.75rem 0}.modal-content{position:relative;min-height:40px;box-shadow:0px 0px 1px 0px rgba(82,100,132,.2),0px 8px 15.52px .48px rgba(28,43,70,.15)}.modal-content>.close{position:absolute;top:.75rem;right:.75rem;height:2.25rem;width:2.25rem;display:inline-flex;justify-content:center;align-items:center;color:#526484;z-index:1;transition:all .3s}.modal-body .stretched{border-radius:0;margin-left:-1.25rem;margin-right:-1.25rem;padding-left:1.25rem;padding-right:1.25rem}.modal-body .stretched.alert{border:none}.modal-body .stretched.alert-icon{padding-left:3.25rem}.modal-body-md{padding:1.75rem 1.25rem}.modal-body-md .stretched{margin-left:-1.25rem;margin-right:-1.25rem;padding-left:1.25rem;padding-right:1.25rem}.modal-body-md .stretched.alert-icon{padding-left:4.5rem}.modal-body-lg{padding:2.25rem 1.25rem}.modal-body-lg .stretched{margin-left:-1.25rem;margin-right:-1.25rem;padding-left:1.25rem;padding-right:1.25rem}.modal-body-lg .stretched.alert-icon{padding-left:4.5rem}.modal-footer-stretch{justify-content:stretch}.modal-footer-between{display:flex;width:100%;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:-0.25rem 0}.modal-footer-between>div{padding:.25rem 0}.modal-dialog{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog::before{height:calc(100vh - 1rem)}.modal.fade .modal-dialog{transform:translate(0, -10px)}.modal.zoom .modal-dialog{transform:scale(0.95);transition:transform .3s ease-out}.modal-dialog-top{align-items:flex-start}.modal.fade .modal-dialog-top{transform:translate(0, -30px)}.modal-dialog-bottom{align-items:flex-end}@media(min-width: 576px){.modal-dialog{min-height:calc(100% - 3.5rem)}.modal-dialog::before{height:calc(100vh - 3.5rem)}.modal-body{padding:1.5rem 1.5rem}.modal-body .stretched{margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}.modal-body .stretched.alert-icon{padding-left:3.5rem}.modal-body-sm{padding:1.25rem 1.25rem}.modal-body-sm .stretched{margin-left:-1.25rem;margin-right:-1.25rem;padding-left:1.25rem;padding-right:1.25rem}.modal-body-sm .stretched.alert-icon{padding-left:3.25rem}.modal-body-md{padding:2.25rem 2.5rem}.modal-body-md .stretched{margin-left:-2.5rem;margin-right:-2.5rem;padding-left:2.5rem;padding-right:2.5rem}.modal-body-md .stretched.alert-icon{padding-left:4.5rem}.modal-body-md .stretched.alert-icon>.icon{left:2.5rem}.modal-body-lg{padding:3.75rem 3.75rem}.modal-body-lg .stretched{margin-left:-3.75rem;margin-right:-3.75rem;padding-left:3.75rem;padding-right:3.75rem}.modal-body-lg .stretched.alert-icon{padding-left:5.75rem}.modal-header{padding:1rem 1.5rem}.modal-header-sm{padding:.75rem 1.25rem}.modal-footer{padding:1rem 1.5rem}.modal-footer-sm{padding:.75rem 1.25rem}}@media(min-width: 768px){.modal-md{max-width:600px}}.pagination-goto{display:inline-flex;align-items:center;font-size:.8125rem;text-transform:uppercase}.page-link{font-size:.8125rem;display:inline-flex;align-items:center;justify-content:center;line-height:1rem;min-width:calc(1rem + 1.125rem + 2px)}.pagination-sm .page-link{line-height:.875rem;min-width:calc(0.875rem + 0.875rem + 2px)}.pagination-lg .page-link{line-height:1.5rem;min-width:calc(1.5rem + 1.125rem + 2px)}.pagination-xl .page-link{padding:.875rem .75rem;font-size:1.38125rem;line-height:1.5rem;min-width:calc(1.5rem + 1.75rem + 2px)}.page-link .icon{font-size:.8125rem;line-height:inherit}.page-link:not([href]){background-color:rgba(0,0,0,0);color:inherit}.page-link:not([href]) .icon:before{position:relative;top:1px}.page-link-prev span,.page-link-next span{display:none}@media(min-width: 576px){.page-link-prev span,.page-link-next span{display:block}.page-link-prev .icon{padding-right:.25rem}.page-link-next .icon{padding-left:.25rem}}.progress-bar{height:100%;line-height:1}.progress-sm{height:.25rem}.progress-md{height:.375rem}.progress-lg{height:1rem}.progress-pill,.progress-pill .progress-bar{border-radius:100px}.progress-text{display:flex;align-items:center;justify-content:space-between;color:#8094ae;margin-bottom:.25rem}.progress-label{font-size:.875rem}.progress-amount{font-size:12px;padding-left:.5rem}.progress-alt{display:flex;align-items:center;overflow:visible}.progress-alt .progress-bar{border-radius:2px}.progress-reverse{flex-direction:row-reverse}.progress-bordered .progress-bar{margin-top:-2px;border:2px solid #fff;box-sizing:content-box}.progress-bordered .progress-bar:not(:first-child){margin-left:-4px}.progress-bordered.progress-reverse .progress-bar{margin-left:0}.progress-bordered.progress-reverse .progress-bar:not(:last-child){margin-left:-5px}.progress-rating{display:flex;align-items:center}.progress-rating-title{width:48px;flex-grow:0;line-height:1.25rem}.progress-rating-percent{width:40px;line-height:1.25rem;text-align:right}.progress-rating .progress{flex-grow:1}.toast .close{display:flex;border:none;background:rgba(0,0,0,0);font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5;margin-right:-0.5rem;margin-left:.5rem}.toast:not(:last-child){margin-bottom:.75rem}@font-face{font-family:"Nioicon";src:url("../fonts/Nioicon.eot");src:url("../fonts/Nioicon.eot#iefix") format("embedded-opentype"),url("../fonts/Nioicon.ttf") format("truetype"),url("../fonts/Nioicon.woff") format("woff"),url("../fonts/Nioicon.svg#Nioicon") format("svg");font-weight:normal;font-style:normal;font-display:block}.ni{font-family:"Nioicon" !important;speak:never;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ni-centos:before{content:""}.ni-covid:before{content:""}.ni-fedora:before{content:""}.ni-hot-fill:before{content:""}.ni-hot:before{content:""}.ni-linux-server:before{content:""}.ni-linux:before{content:""}.ni-note-add-fill:before{content:""}.ni-repeat-fill:before{content:""}.ni-tranx-fill:before{content:""}.ni-ubuntu:before{content:""}.ni-virus:before{content:""}.ni-b-chrome:before{content:""}.ni-b-edge:before{content:""}.ni-b-firefox:before{content:""}.ni-b-ie:before{content:""}.ni-b-opera:before{content:""}.ni-b-safari:before{content:""}.ni-b-si:before{content:""}.ni-b-uc:before{content:""}.ni-brick-fill:before{content:""}.ni-brick:before{content:""}.ni-col-3s:before{content:""}.ni-col-4s:before{content:""}.ni-col-2s:before{content:""}.ni-comments:before{content:""}.ni-dot-sq:before{content:""}.ni-dot:before{content:""}.ni-footer:before{content:""}.ni-header:before{content:""}.ni-heading:before{content:""}.ni-layout-alt-fill:before{content:""}.ni-layout-alt:before{content:""}.ni-layout-fill1:before{content:""}.ni-layout1:before{content:""}.ni-list-index-fill:before{content:""}.ni-list-index:before{content:""}.ni-list-thumb-alt-fill:before{content:""}.ni-list-thumb-alt:before{content:""}.ni-list-thumb-fill:before{content:""}.ni-list-thumb:before{content:""}.ni-masonry-fill:before{content:""}.ni-masonry:before{content:""}.ni-menu-circled:before{content:""}.ni-menu-squared:before{content:""}.ni-notice:before{content:""}.ni-pen2:before{content:""}.ni-property-blank:before{content:""}.ni-propert-blank:before{content:""}.ni-property-add:before{content:""}.ni-property-alt:before{content:""}.ni-property-remove:before{content:""}.ni-property:before{content:""}.ni-puzzle-fill:before{content:""}.ni-puzzle:before{content:""}.ni-quote-left:before{content:""}.ni-quote-right:before{content:""}.ni-row-mix:before{content:""}.ni-row-view1:before{content:""}.ni-sidebar-r:before{content:""}.ni-text2:before{content:""}.ni-tile-thumb-fill:before{content:""}.ni-tile-thumb:before{content:""}.ni-view-col-fill:before{content:""}.ni-view-col-sq:before{content:""}.ni-view-col:before{content:""}.ni-view-col2:before{content:""}.ni-view-col3:before{content:""}.ni-view-cols-fill:before{content:""}.ni-view-cols-sq:before{content:""}.ni-view-cols:before{content:""}.ni-view-grid-fill:before{content:""}.ni-view-grid-sq:before{content:""}.ni-view-grid-wd:before{content:""}.ni-view-grid:before{content:""}.ni-view-grid2-wd:before{content:""}.ni-view-grid3-wd:before{content:""}.ni-view-group-fill:before{content:""}.ni-view-group-wd:before{content:""}.ni-view-list-fill:before{content:""}.ni-view-list-sq:before{content:""}.ni-view-list-wd:before{content:""}.ni-view-list:before{content:""}.ni-view-panel-fill:before{content:""}.ni-view-panel-sq:before{content:""}.ni-view-panel:before{content:""}.ni-view-row-fill:before{content:""}.ni-view-row-sq:before{content:""}.ni-view-row-wd:before{content:""}.ni-view-row:before{content:""}.ni-view-x1:before{content:""}.ni-view-x2:before{content:""}.ni-view-x3:before{content:""}.ni-view-x4:before{content:""}.ni-view-x5:before{content:""}.ni-view-x6:before{content:""}.ni-view-x7:before{content:""}.ni-dashlite:before{content:""}.ni-dashlite-circle:before{content:""}.ni-dashlite-alt:before{content:""}.ni-master-card:before{content:""}.ni-paypal:before{content:""}.ni-visa-alt:before{content:""}.ni-coin-eur:before{content:""}.ni-coin-gbp:before{content:""}.ni-sign-ada-alt:before{content:""}.ni-sign-bch-alt:before{content:""}.ni-sign-bgp-alt:before{content:""}.ni-sign-bnb-alt:before{content:""}.ni-sign-brl-alt:before{content:""}.ni-sign-btc-alt:before{content:""}.ni-sign-cc-alt:before{content:""}.ni-sign-cc-alt2:before{content:""}.ni-sign-chf-alt:before{content:""}.ni-sign-cny-alt:before{content:""}.ni-sign-czk-alt:before{content:""}.ni-sign-dash-alt:before{content:""}.ni-sign-dkk-alt:before{content:""}.ni-sign-eos-alt:before{content:""}.ni-sign-eth-alt:before{content:""}.ni-sign-eur-alt2:before{content:""}.ni-sign-euro-alt:before{content:""}.ni-sign-gbp-alt2:before{content:""}.ni-sign-hkd-alt:before{content:""}.ni-sign-idr-alt:before{content:""}.ni-sign-inr-alt:before{content:""}.ni-sign-jpy-alt:before{content:""}.ni-sign-kr-alt:before{content:""}.ni-sign-ltc-alt:before{content:""}.ni-sign-ltc:before{content:""}.ni-sign-mxn-alt:before{content:""}.ni-sign-mxr-alt:before{content:""}.ni-sign-myr-alt:before{content:""}.ni-sign-paypal-alt:before{content:""}.ni-sign-paypal-full:before{content:""}.ni-sign-php-alt:before{content:""}.ni-sign-pln-alt:before{content:""}.ni-sign-rub-alt:before{content:""}.ni-sign-sek-alt:before{content:""}.ni-sign-sgd-alt:before{content:""}.ni-sign-kobo-alt:before{content:""}.ni-sign-steem-alt:before{content:""}.ni-sign-steller-alt:before{content:""}.ni-sign-stripe-fulll:before{content:""}.ni-sign-thb-alt:before{content:""}.ni-sign-trx-alt:before{content:""}.ni-sign-try-alt:before{content:""}.ni-sign-usd-alt:before{content:""}.ni-sign-usd-alt2:before{content:""}.ni-sign-usdc-alt:before{content:""}.ni-sign-usdt-alt:before{content:""}.ni-sign-visa-alt:before{content:""}.ni-sign-vnd-alt:before{content:""}.ni-sign-waves-alt:before{content:""}.ni-sign-xem-alt:before{content:""}.ni-sign-xrp-new-alt:before{content:""}.ni-sign-xrp-old-alt:before{content:""}.ni-sign-zcash-alt:before{content:""}.ni-chevron-left:before{content:""}.ni-chevron-right:before{content:""}.ni-chevron-up:before{content:""}.ni-chevron-down:before{content:""}.ni-chevron-left-round:before{content:""}.ni-chevron-right-round:before{content:""}.ni-chevron-up-round:before{content:""}.ni-chevron-down-round:before{content:""}.ni-chevron-left-round-fill:before{content:""}.ni-chevron-right-round-fill:before{content:""}.ni-chevron-up-round-fill:before{content:""}.ni-chevron-down-round-fill:before{content:""}.ni-chevron-left-c:before{content:""}.ni-chevron-right-c:before{content:""}.ni-chevron-up-c:before{content:""}.ni-chevron-down-c:before{content:""}.ni-chevron-left-fill-c:before{content:""}.ni-chevron-right-fill-c:before{content:""}.ni-chevron-up-fill-c:before{content:""}.ni-chevron-down-fill-c:before{content:""}.ni-chevron-left-circle:before{content:""}.ni-chevron-right-circle:before{content:""}.ni-chevron-up-circle:before{content:""}.ni-chevron-down-circle:before{content:""}.ni-chevron-left-circle-fill:before{content:""}.ni-chevron-right-circle-fill:before{content:""}.ni-chevron-up-circle-fill:before{content:""}.ni-chevron-down-circle-fill:before{content:""}.ni-caret-left:before{content:""}.ni-caret-right:before{content:""}.ni-caret-up:before{content:""}.ni-caret-down:before{content:""}.ni-caret-left-fill:before{content:""}.ni-caret-right-fill:before{content:""}.ni-caret-up-fill:before{content:""}.ni-caret-down-fill:before{content:""}.ni-sort:before{content:""}.ni-sort-up:before{content:""}.ni-sort-down:before{content:""}.ni-sort-fill:before{content:""}.ni-sort-up-fill:before{content:""}.ni-sort-down-fill:before{content:""}.ni-sort-v:before{content:""}.ni-swap-v:before{content:""}.ni-swap:before{content:""}.ni-arrow-left-round:before{content:""}.ni-arrow-right-round:before{content:""}.ni-arrow-up-round:before{content:""}.ni-arrow-down-round:before{content:""}.ni-arrow-left-round-fill:before{content:""}.ni-arrow-right-round-fill:before{content:""}.ni-arrow-up-round-fill:before{content:""}.ni-arrow-down-round-fill:before{content:""}.ni-arrow-left-c:before{content:""}.ni-arrow-right-c:before{content:""}.ni-arrow-up-c:before{content:""}.ni-arrow-down-c:before{content:""}.ni-arrow-left-fill-c:before{content:""}.ni-arrow-right-fill-c:before{content:""}.ni-arrow-up-fill-c:before{content:""}.ni-arrow-down-fill-c:before{content:""}.ni-arrow-left-circle:before{content:""}.ni-arrow-right-circle:before{content:""}.ni-arrow-up-circle:before{content:""}.ni-arrow-down-circle:before{content:""}.ni-arrow-left-circle-fill:before{content:""}.ni-arrow-up-circle-fill:before{content:""}.ni-arrow-down-circle-fill:before{content:""}.ni-arrow-right-circle-fill:before{content:""}.ni-chevrons-left:before{content:""}.ni-chevrons-right:before{content:""}.ni-chevrons-up:before{content:""}.ni-chevrons-down:before{content:""}.ni-first:before{content:""}.ni-last:before{content:""}.ni-back-ios:before{content:""}.ni-forward-ios:before{content:""}.ni-upword-ios:before{content:""}.ni-downward-ios:before{content:""}.ni-back-alt:before{content:""}.ni-forward-alt:before{content:""}.ni-upword-alt:before{content:""}.ni-downward-alt:before{content:""}.ni-back-alt-fill:before{content:""}.ni-forward-alt-fill:before{content:""}.ni-upword-alt-fill:before{content:""}.ni-downward-alt-fill:before{content:""}.ni-arrow-long-left:before{content:""}.ni-arrow-long-right:before{content:""}.ni-arrow-long-up:before{content:""}.ni-arrow-long-down:before{content:""}.ni-arrow-left:before{content:""}.ni-arrow-right:before{content:""}.ni-arrow-up:before{content:""}.ni-arrow-down:before{content:""}.ni-arrow-up-left:before{content:""}.ni-arrow-up-right:before{content:""}.ni-arrow-down-left:before{content:""}.ni-arrow-down-right:before{content:""}.ni-arrow-to-left:before{content:""}.ni-arrow-to-right:before{content:""}.ni-arrow-to-up:before{content:""}.ni-arrow-to-down:before{content:""}.ni-arrow-from-left:before{content:""}.ni-arrow-from-right:before{content:""}.ni-arrow-from-up:before{content:""}.ni-arrow-from-down:before{content:""}.ni-curve-down-left:before{content:""}.ni-curve-up-right:before{content:""}.ni-curve-up-left:before{content:""}.ni-curve-down-right:before{content:""}.ni-curve-left-up:before{content:""}.ni-curve-right-up:before{content:""}.ni-curve-left-down:before{content:""}.ni-curve-right-down:before{content:""}.ni-back-arrow:before{content:""}.ni-forward-arrow:before{content:""}.ni-back-arrow-fill:before{content:""}.ni-forward-arrow-fill:before{content:""}.ni-navigate:before{content:""}.ni-navigate-up:before{content:""}.ni-navigate-fill:before{content:""}.ni-navigate-up-fill:before{content:""}.ni-send:before{content:""}.ni-send-alt:before{content:""}.ni-unfold-less:before{content:""}.ni-unfold-more:before{content:""}.ni-exchange-v:before{content:""}.ni-exchange:before{content:""}.ni-expand:before{content:""}.ni-shrink:before{content:""}.ni-focus:before{content:""}.ni-maximize:before{content:""}.ni-minimize:before{content:""}.ni-maximize-alt:before{content:""}.ni-minimize-alt:before{content:""}.ni-shuffle:before{content:""}.ni-cross-sm:before{content:""}.ni-cross:before{content:""}.ni-cross-round:before{content:""}.ni-cross-circle:before{content:""}.ni-cross-c:before{content:""}.ni-cross-round-fill:before{content:""}.ni-cross-circle-fill:before{content:""}.ni-cross-fill-c:before{content:""}.ni-na:before{content:""}.ni-check:before{content:""}.ni-check-thick:before{content:""}.ni-done:before{content:""}.ni-check-round:before{content:""}.ni-check-circle:before{content:""}.ni-check-c:before{content:""}.ni-check-round-fill:before{content:""}.ni-check-circle-fill:before{content:""}.ni-check-fill-c:before{content:""}.ni-check-circle-cut:before{content:""}.ni-check-round-cut:before{content:""}.ni-bullet:before{content:""}.ni-circle:before{content:""}.ni-square:before{content:""}.ni-square-c:before{content:""}.ni-bullet-fill:before{content:""}.ni-circle-fill:before{content:""}.ni-square-fill:before{content:""}.ni-square-fill-c:before{content:""}.ni-plus-sm:before{content:""}.ni-minus-sm:before{content:""}.ni-plus:before{content:""}.ni-minus:before{content:""}.ni-plus-round:before{content:""}.ni-minus-round:before{content:""}.ni-plus-circle:before{content:""}.ni-minus-circle:before{content:""}.ni-plus-c:before{content:""}.ni-minus-c:before{content:""}.ni-plus-round-fill:before{content:""}.ni-plus-circle-fill:before{content:""}.ni-minus-round-fill:before{content:""}.ni-minus-circle-fill:before{content:""}.ni-plus-fill-c:before{content:""}.ni-minus-fill-c:before{content:""}.ni-plus-medi:before{content:""}.ni-plus-medi-fill:before{content:""}.ni-equal-sm:before{content:""}.ni-equal:before{content:""}.ni-calc:before{content:""}.ni-search:before{content:""}.ni-zoom-out:before{content:""}.ni-zoom-in:before{content:""}.ni-play:before{content:""}.ni-play-fill:before{content:""}.ni-play-circle:before{content:""}.ni-play-circle-fill:before{content:""}.ni-pause:before{content:""}.ni-pause-fill:before{content:""}.ni-pause-circle:before{content:""}.ni-pause-circle-fill:before{content:""}.ni-stop:before{content:""}.ni-stop-fill:before{content:""}.ni-stop-circle:before{content:""}.ni-stop-circle-fill:before{content:""}.ni-rewind:before{content:""}.ni-forward:before{content:""}.ni-rewind-fill:before{content:""}.ni-forward-fill:before{content:""}.ni-step-back:before{content:""}.ni-step-forward:before{content:""}.ni-vol-off:before{content:""}.ni-vol-no:before{content:""}.ni-vol-half:before{content:""}.ni-vol:before{content:""}.ni-mic:before{content:""}.ni-mic-off:before{content:""}.ni-video:before{content:""}.ni-video-off:before{content:""}.ni-video-fill:before{content:""}.ni-loader:before{content:""}.ni-power:before{content:""}.ni-signout:before{content:""}.ni-signin:before{content:""}.ni-upload:before{content:""}.ni-download:before{content:""}.ni-alert-circle:before{content:""}.ni-alert:before{content:""}.ni-caution:before{content:""}.ni-report:before{content:""}.ni-alert-c:before{content:""}.ni-alert-circle-fill:before{content:""}.ni-alert-fill:before{content:""}.ni-caution-fill:before{content:""}.ni-report-fill:before{content:""}.ni-alert-fill-c:before{content:""}.ni-info-i:before{content:""}.ni-info:before{content:""}.ni-info-fill:before{content:""}.ni-help:before{content:""}.ni-help-fill:before{content:""}.ni-archived:before{content:""}.ni-archive:before{content:""}.ni-unarchive:before{content:""}.ni-archived-fill:before{content:""}.ni-archive-fill:before{content:""}.ni-unarchive-fill:before{content:""}.ni-bag:before{content:""}.ni-bag-fill:before{content:""}.ni-bell:before{content:""}.ni-bell-off:before{content:""}.ni-bell-fill:before{content:""}.ni-bell-off-fill:before{content:""}.ni-wifi:before{content:""}.ni-wifi-off:before{content:""}.ni-live:before{content:""}.ni-signal:before{content:""}.ni-bluetooth:before{content:""}.ni-blank-alt:before{content:""}.ni-blank:before{content:""}.ni-blank-fill:before{content:""}.ni-blankf-fill:before{content:""}.ni-block-over:before{content:""}.ni-book-read:before{content:""}.ni-book:before{content:""}.ni-book-fill:before{content:""}.ni-bulb-fill:before{content:""}.ni-bulb:before{content:""}.ni-calendar-alt-fill:before{content:""}.ni-calendar-alt:before{content:""}.ni-calendar-booking-fill:before{content:""}.ni-calendar-booking:before{content:""}.ni-calendar-check-fill:before{content:""}.ni-calendar-check:before{content:""}.ni-calendar-fill:before{content:""}.ni-calendar:before{content:""}.ni-calender-date-fill:before{content:""}.ni-calender-date:before{content:""}.ni-call:before{content:""}.ni-call-alt:before{content:""}.ni-call-alt-fill:before{content:""}.ni-call-fill:before{content:""}.ni-camera-fill:before{content:""}.ni-camera:before{content:""}.ni-capsule:before{content:""}.ni-capsule-fill:before{content:""}.ni-cards:before{content:""}.ni-cards-fill:before{content:""}.ni-cart:before{content:""}.ni-cart-fill:before{content:""}.ni-cc:before{content:""}.ni-cc-alt:before{content:""}.ni-cc-alt2:before{content:""}.ni-cc-secure:before{content:""}.ni-cc-new:before{content:""}.ni-cc-off:before{content:""}.ni-cc-fill:before{content:""}.ni-cc-alt-fill:before{content:""}.ni-cc-alt2-fill:before{content:""}.ni-cc-secure-fill:before{content:""}.ni-msg-circle:before{content:""}.ni-chat-circle:before{content:""}.ni-msg:before{content:""}.ni-chat:before{content:""}.ni-question-alt:before{content:""}.ni-question:before{content:""}.ni-msg-circle-fill:before{content:""}.ni-chat-circle-fill:before{content:""}.ni-msg-fill:before{content:""}.ni-chat-fill:before{content:""}.ni-clip-h:before{content:""}.ni-clip-v:before{content:""}.ni-clip:before{content:""}.ni-link-alt:before{content:""}.ni-unlink:before{content:""}.ni-unlink-alt:before{content:""}.ni-link-h:before{content:""}.ni-link-v:before{content:""}.ni-link:before{content:""}.ni-clipboard:before{content:""}.ni-clipboad-check:before{content:""}.ni-clipboard-fill:before{content:""}.ni-clipboad-check-fill:before{content:""}.ni-clock:before{content:""}.ni-clock-fill:before{content:""}.ni-cloud:before{content:""}.ni-upload-cloud:before{content:""}.ni-download-cloud:before{content:""}.ni-cloud-fill:before{content:""}.ni-contact:before{content:""}.ni-contact-fill:before{content:""}.ni-coffee:before{content:""}.ni-coffee-fill:before{content:""}.ni-box-view:before{content:""}.ni-col-view:before{content:""}.ni-sidebar:before{content:""}.ni-layout:before{content:""}.ni-table-view:before{content:""}.ni-layout2:before{content:""}.ni-row-view:before{content:""}.ni-dot-box:before{content:""}.ni-layout-fill:before{content:""}.ni-box-view-fill:before{content:""}.ni-sidebar-fill:before{content:""}.ni-table-view-fill:before{content:""}.ni-dot-box-fill:before{content:""}.ni-template:before{content:""}.ni-browser:before{content:""}.ni-toolbar:before{content:""}.ni-browser-fill:before{content:""}.ni-toolbar-fill:before{content:""}.ni-template-fill:before{content:""}.ni-box:before{content:""}.ni-package:before{content:""}.ni-layer:before{content:""}.ni-layers:before{content:""}.ni-panel:before{content:""}.ni-server:before{content:""}.ni-layer-fill:before{content:""}.ni-layers-fill:before{content:""}.ni-package-fill:before{content:""}.ni-panel-fill:before{content:""}.ni-server-fill:before{content:""}.ni-color-palette:before{content:""}.ni-color-palette-fill:before{content:""}.ni-copy:before{content:""}.ni-copy-fill:before{content:""}.ni-crop-alt:before{content:""}.ni-crop:before{content:""}.ni-target:before{content:""}.ni-crosshair:before{content:""}.ni-crosshair-fill:before{content:""}.ni-db-fill:before{content:""}.ni-db:before{content:""}.ni-hard-drive:before{content:""}.ni-cpu:before{content:""}.ni-disk:before{content:""}.ni-pen:before{content:""}.ni-edit-alt:before{content:""}.ni-pen-fill:before{content:""}.ni-edit-alt-fill:before{content:""}.ni-pen-alt-fill:before{content:""}.ni-edit-fill:before{content:""}.ni-edit:before{content:""}.ni-external-alt:before{content:""}.ni-external:before{content:""}.ni-eye-alt:before{content:""}.ni-eye-alt-fill:before{content:""}.ni-eye:before{content:""}.ni-eye-fill:before{content:""}.ni-eye-off:before{content:""}.ni-eye-off-fill:before{content:""}.ni-file:before{content:""}.ni-file-minus:before{content:""}.ni-file-plus:before{content:""}.ni-file-remove:before{content:""}.ni-file-check:before{content:""}.ni-file-code:before{content:""}.ni-file-docs:before{content:""}.ni-file-img:before{content:""}.ni-file-doc:before{content:""}.ni-file-pdf:before{content:""}.ni-file-xls:before{content:""}.ni-file-zip:before{content:""}.ni-file-download:before{content:""}.ni-file-text:before{content:""}.ni-files:before{content:""}.ni-file-fill:before{content:""}.ni-file-minus-fill:before{content:""}.ni-file-plus-fill:before{content:""}.ni-file-remove-fill:before{content:""}.ni-file-check-fill:before{content:""}.ni-file-text-fill:before{content:""}.ni-files-fill:before{content:""}.ni-folder:before{content:""}.ni-folder-minus:before{content:""}.ni-folder-plus:before{content:""}.ni-folder-remove:before{content:""}.ni-folder-check:before{content:""}.ni-folder-list:before{content:""}.ni-folders:before{content:""}.ni-folder-fill:before{content:""}.ni-folders-fill:before{content:""}.ni-filter-alt:before{content:""}.ni-sort-line:before{content:""}.ni-filter-fill:before{content:""}.ni-filter:before{content:""}.ni-flag:before{content:""}.ni-flag-fill:before{content:""}.ni-notify:before{content:""}.ni-dashboard:before{content:""}.ni-dashboard-fill:before{content:""}.ni-grid-sq:before{content:""}.ni-grid:before{content:""}.ni-grid-c:before{content:""}.ni-grid-alt:before{content:""}.ni-grid-plus:before{content:""}.ni-grid-add-c:before{content:""}.ni-grid-fill:before{content:""}.ni-grid-fill-c:before{content:""}.ni-grid-alt-fill:before{content:""}.ni-grid-plus-fill:before{content:""}.ni-grid-add-fill-c:before{content:""}.ni-grid-box-alt-fill:before{content:""}.ni-grid-box-alt:before{content:""}.ni-grid-box:before{content:""}.ni-grid-box-fill:before{content:""}.ni-grid-line:before{content:""}.ni-menu-alt-left:before{content:""}.ni-menu-alt-r:before{content:""}.ni-menu-alt:before{content:""}.ni-menu-center:before{content:""}.ni-menu-left:before{content:""}.ni-menu-right:before{content:""}.ni-menu:before{content:""}.ni-trend-up:before{content:""}.ni-trend-down:before{content:""}.ni-line-chart-down:before{content:""}.ni-line-chart-up:before{content:""}.ni-line-chart:before{content:""}.ni-bar-chart:before{content:""}.ni-bar-chart-alt:before{content:""}.ni-chart-up:before{content:""}.ni-chart-down:before{content:""}.ni-growth:before{content:""}.ni-growth-fill:before{content:""}.ni-bar-chart-fill:before{content:""}.ni-bar-c:before{content:""}.ni-bar-fill-c:before{content:""}.ni-pie:before{content:""}.ni-pie-alt:before{content:""}.ni-pie-fill:before{content:""}.ni-activity:before{content:""}.ni-activity-alt:before{content:""}.ni-activity-round:before{content:""}.ni-activity-round-fill:before{content:""}.ni-meter:before{content:""}.ni-speed:before{content:""}.ni-happy:before{content:""}.ni-sad:before{content:""}.ni-meh:before{content:""}.ni-happy-fill:before{content:""}.ni-happyf-fill:before{content:""}.ni-sad-fill:before{content:""}.ni-meh-fill:before{content:""}.ni-home:before{content:""}.ni-home-alt:before{content:""}.ni-home-fill:before{content:""}.ni-img:before{content:""}.ni-img-fill:before{content:""}.ni-inbox:before{content:""}.ni-inbox-in:before{content:""}.ni-inbox-out:before{content:""}.ni-inbox-fill:before{content:""}.ni-inbox-in-fill:before{content:""}.ni-inbox-out-fill:before{content:""}.ni-link-group:before{content:""}.ni-lock:before{content:""}.ni-lock-alt:before{content:""}.ni-lock-fill:before{content:""}.ni-lock-alt-fill:before{content:""}.ni-unlock:before{content:""}.ni-unlock-fill:before{content:""}.ni-mail:before{content:""}.ni-emails:before{content:""}.ni-mail-fill:before{content:""}.ni-emails-fill:before{content:""}.ni-map-pin:before{content:""}.ni-location:before{content:""}.ni-map:before{content:""}.ni-map-pin-fill:before{content:""}.ni-list:before{content:""}.ni-list-ol:before{content:""}.ni-align-center:before{content:""}.ni-align-justify:before{content:""}.ni-align-left:before{content:""}.ni-align-right:before{content:""}.ni-list-check:before{content:""}.ni-list-round:before{content:""}.ni-card-view:before{content:""}.ni-list-fill:before{content:""}.ni-save:before{content:""}.ni-save-fill:before{content:""}.ni-move:before{content:""}.ni-scissor:before{content:""}.ni-text:before{content:""}.ni-text-a:before{content:""}.ni-bold:before{content:""}.ni-italic:before{content:""}.ni-underline:before{content:""}.ni-percent:before{content:""}.ni-at:before{content:""}.ni-hash:before{content:""}.ni-code:before{content:""}.ni-code-download:before{content:""}.ni-terminal:before{content:""}.ni-cmd:before{content:""}.ni-sun:before{content:""}.ni-sun-fill:before{content:""}.ni-moon-fill:before{content:""}.ni-moon:before{content:""}.ni-light:before{content:""}.ni-light-fill:before{content:""}.ni-more-v:before{content:""}.ni-more-h:before{content:""}.ni-more-h-alt:before{content:""}.ni-more-v-alt:before{content:""}.ni-music:before{content:""}.ni-movie:before{content:""}.ni-offer:before{content:""}.ni-offer-fill:before{content:""}.ni-opt-alt:before{content:""}.ni-opt:before{content:""}.ni-opt-dot-alt:before{content:""}.ni-opt-dot:before{content:""}.ni-opt-dot-fill:before{content:""}.ni-opt-alt-fill:before{content:""}.ni-user-alt:before{content:""}.ni-user-alt-fill:before{content:""}.ni-user:before{content:""}.ni-users:before{content:""}.ni-user-add:before{content:""}.ni-user-remove:before{content:""}.ni-user-check:before{content:""}.ni-user-cross:before{content:""}.ni-account-setting:before{content:""}.ni-account-setting-alt:before{content:""}.ni-user-list:before{content:""}.ni-user-fill:before{content:""}.ni-users-fill:before{content:""}.ni-user-add-fill:before{content:""}.ni-user-remove-fill:before{content:""}.ni-user-check-fill:before{content:""}.ni-user-cross-fill:before{content:""}.ni-account-setting-fill:before{content:""}.ni-user-list-fill:before{content:""}.ni-user-circle:before{content:""}.ni-user-circle-fill:before{content:""}.ni-user-c:before{content:""}.ni-user-fill-c:before{content:""}.ni-user-round:before{content:""}.ni-printer:before{content:""}.ni-printer-fill:before{content:""}.ni-laptop:before{content:""}.ni-monitor:before{content:""}.ni-tablet:before{content:""}.ni-mobile:before{content:""}.ni-undo:before{content:""}.ni-redo:before{content:""}.ni-reload-alt:before{content:""}.ni-reload:before{content:""}.ni-regen-alt:before{content:""}.ni-regen:before{content:""}.ni-invest:before{content:""}.ni-history:before{content:""}.ni-histroy:before{content:""}.ni-update:before{content:""}.ni-repeat:before{content:""}.ni-repeat-v:before{content:""}.ni-tranx:before{content:""}.ni-reply-all:before{content:""}.ni-reply:before{content:""}.ni-reply-fill:before{content:""}.ni-reply-all-fill:before{content:""}.ni-notes:before{content:""}.ni-note-add:before{content:""}.ni-notes-alt:before{content:""}.ni-article:before{content:""}.ni-text-rich:before{content:""}.ni-todo:before{content:""}.ni-report-profit:before{content:""}.ni-reports-alt:before{content:""}.ni-reports:before{content:""}.ni-task:before{content:""}.ni-note-add-c:before{content:""}.ni-task-c:before{content:""}.ni-todo-fill:before{content:""}.ni-note-add-fill-c:before{content:""}.ni-task-fill-c:before{content:""}.ni-scan-fill:before{content:""}.ni-scan:before{content:""}.ni-qr:before{content:""}.ni-money:before{content:""}.ni-coins:before{content:""}.ni-coin:before{content:""}.ni-coin-alt:before{content:""}.ni-coin-alt-fill:before{content:""}.ni-setting-alt-fill:before{content:""}.ni-setting-alt:before{content:""}.ni-setting-fill:before{content:""}.ni-setting:before{content:""}.ni-share-alt:before{content:""}.ni-share-fill:before{content:""}.ni-share:before{content:""}.ni-network:before{content:""}.ni-rss:before{content:""}.ni-shield:before{content:""}.ni-shield-star:before{content:""}.ni-shield-check:before{content:""}.ni-shield-alert:before{content:""}.ni-shield-off:before{content:""}.ni-security:before{content:""}.ni-policy:before{content:""}.ni-shield-alert-fill:before{content:""}.ni-shield-check-fill:before{content:""}.ni-shield-fill:before{content:""}.ni-shield-half:before{content:""}.ni-shield-star-fill:before{content:""}.ni-policy-fill:before{content:""}.ni-spark:before{content:""}.ni-spark-off:before{content:""}.ni-spark-fill:before{content:""}.ni-spark-off-fill:before{content:""}.ni-wallet:before{content:""}.ni-wallet-alt:before{content:""}.ni-wallet-in:before{content:""}.ni-wallet-out:before{content:""}.ni-wallet-saving:before{content:""}.ni-wallet-fill:before{content:""}.ni-star:before{content:""}.ni-star-half:before{content:""}.ni-star-half-fill:before{content:""}.ni-star-fill:before{content:""}.ni-star-round:before{content:""}.ni-heart:before{content:""}.ni-heart-fill:before{content:""}.ni-swap-alt-fill:before{content:""}.ni-swap-alt:before{content:""}.ni-thumbs-down:before{content:""}.ni-thumbs-up:before{content:""}.ni-tag:before{content:""}.ni-tag-alt:before{content:""}.ni-tags:before{content:""}.ni-tag-fill:before{content:""}.ni-tag-alt-fill:before{content:""}.ni-tags-fill:before{content:""}.ni-bookmark:before{content:""}.ni-bookmark-fill:before{content:""}.ni-label:before{content:""}.ni-label-fill:before{content:""}.ni-priority:before{content:""}.ni-piority:before{content:""}.ni-priority-fill:before{content:""}.ni-piority-fill:before{content:""}.ni-label-alt:before{content:""}.ni-label-alt-fill:before{content:""}.ni-ticket-alt:before{content:""}.ni-ticket:before{content:""}.ni-ticket-minus:before{content:""}.ni-ticket-plus:before{content:""}.ni-ticket-alt-fill:before{content:""}.ni-ticket-fill:before{content:""}.ni-ticket-minus-fill:before{content:""}.ni-ticket-plus-fill:before{content:""}.ni-toggle-off:before{content:""}.ni-toggle-on:before{content:""}.ni-trash-alt:before{content:""}.ni-trash-empty:before{content:""}.ni-trash:before{content:""}.ni-trash-fill:before{content:""}.ni-trash-empty-fill:before{content:""}.ni-delete-fill:before{content:""}.ni-delete:before{content:""}.ni-alarm-alt:before{content:""}.ni-alarm:before{content:""}.ni-bugs:before{content:""}.ni-building:before{content:""}.ni-building-fill:before{content:""}.ni-headphone:before{content:""}.ni-headphone-fill:before{content:""}.ni-aperture:before{content:""}.ni-help-alt:before{content:""}.ni-award:before{content:""}.ni-briefcase:before{content:""}.ni-gift:before{content:""}.ni-globe:before{content:""}.ni-umbrela:before{content:""}.ni-truck:before{content:""}.ni-sign-usd:before{content:""}.ni-sign-dollar:before{content:""}.ni-sign-mxn:before{content:""}.ni-sign-sgd:before{content:""}.ni-sign-euro:before{content:""}.ni-sign-eur:before{content:""}.ni-sign-gbp:before{content:""}.ni-sign-pound:before{content:""}.ni-sign-thb:before{content:""}.ni-sign-inr:before{content:""}.ni-sign-jpy:before{content:""}.ni-sign-yen:before{content:""}.ni-sign-cny:before{content:""}.ni-sign-kobo:before{content:""}.ni-sign-chf:before{content:""}.ni-sign-vnd:before{content:""}.ni-sign-php:before{content:""}.ni-sign-brl:before{content:""}.ni-sign-idr:before{content:""}.ni-sign-czk:before{content:""}.ni-sign-hkd:before{content:""}.ni-sign-kr:before{content:""}.ni-sign-dkk:before{content:""}.ni-sign-nok:before{content:""}.ni-sign-sek:before{content:""}.ni-sign-rub:before{content:""}.ni-sign-myr:before{content:""}.ni-sign-pln:before{content:""}.ni-sign-try:before{content:""}.ni-sign-waves:before{content:""}.ni-waves:before{content:""}.ni-sign-trx:before{content:""}.ni-tron:before{content:""}.ni-sign-xem:before{content:""}.ni-nem:before{content:""}.ni-sign-mxr:before{content:""}.ni-monero:before{content:""}.ni-sign-usdc:before{content:""}.ni-sign-steller:before{content:""}.ni-sign-steem:before{content:""}.ni-sign-usdt:before{content:""}.ni-tether:before{content:""}.ni-sign-btc:before{content:""}.ni-bitcoin:before{content:""}.ni-sign-bch:before{content:""}.ni-bitcoin-cash:before{content:""}.ni-sign-bnb:before{content:""}.ni-binance:before{content:""}.ni-sign-ada:before{content:""}.ni-sign-zcash:before{content:""}.ni-sign-eth:before{content:""}.ni-ethereum:before{content:""}.ni-sign-dash:before{content:""}.ni-dash:before{content:""}.ni-sign-xrp-old:before{content:""}.ni-ripple-old:before{content:""}.ni-sign-eos:before{content:""}.ni-eos:before{content:""}.ni-sign-xrp:before{content:""}.ni-ripple:before{content:""}.ni-american-express:before{content:""}.ni-jcb:before{content:""}.ni-cc-jcb:before{content:""}.ni-mc:before{content:""}.ni-cc-mc:before{content:""}.ni-discover:before{content:""}.ni-cc-discover:before{content:""}.ni-visa:before{content:""}.ni-cc-visa:before{content:""}.ni-cc-paypal:before{content:""}.ni-cc-stripe:before{content:""}.ni-amazon-pay:before{content:""}.ni-amazon-pay-fill:before{content:""}.ni-google-pay:before{content:""}.ni-google-pay-fill:before{content:""}.ni-apple-pay:before{content:""}.ni-apple-pay-fill:before{content:""}.ni-angular:before{content:""}.ni-react:before{content:""}.ni-laravel:before{content:""}.ni-html5:before{content:""}.ni-css3-fill:before{content:""}.ni-css3:before{content:""}.ni-js:before{content:""}.ni-php:before{content:""}.ni-python:before{content:""}.ni-bootstrap:before{content:""}.ni-ebay:before{content:""}.ni-google-wallet:before{content:""}.ni-google-drive:before{content:""}.ni-google-play-store:before{content:""}.ni-android:before{content:""}.ni-blogger-fill:before{content:""}.ni-blogger:before{content:""}.ni-hangout:before{content:""}.ni-apple-store:before{content:""}.ni-apple-store-ios:before{content:""}.ni-stripe:before{content:""}.ni-apple:before{content:""}.ni-microsoft:before{content:""}.ni-windows:before{content:""}.ni-amazon:before{content:""}.ni-paypal-alt:before{content:""}.ni-airbnb:before{content:""}.ni-adobe:before{content:""}.ni-mailchimp:before{content:""}.ni-dropbox:before{content:""}.ni-digital-ocean:before{content:""}.ni-slack:before{content:""}.ni-slack-hash:before{content:""}.ni-stack-overflow:before{content:""}.ni-soundcloud:before{content:""}.ni-blackberry:before{content:""}.ni-spotify:before{content:""}.ni-kickstarter:before{content:""}.ni-houzz:before{content:""}.ni-vine:before{content:""}.ni-yelp:before{content:""}.ni-yoast:before{content:""}.ni-envato:before{content:""}.ni-wordpress:before{content:""}.ni-wp:before{content:""}.ni-wordpress-fill:before{content:""}.ni-elementor:before{content:""}.ni-joomla:before{content:""}.ni-megento:before{content:""}.ni-git:before{content:""}.ni-github:before{content:""}.ni-github-round:before{content:""}.ni-github-circle:before{content:""}.ni-dribbble:before{content:""}.ni-dribbble-round:before{content:""}.ni-behance:before{content:""}.ni-behance-fill:before{content:""}.ni-flickr:before{content:""}.ni-flickr-round:before{content:""}.ni-medium:before{content:""}.ni-medium-round:before{content:""}.ni-reddit:before{content:""}.ni-reddit-round:before{content:""}.ni-reddit-circle:before{content:""}.ni-google:before{content:""}.ni-facebook-f:before{content:""}.ni-facebook-fill:before{content:""}.ni-facebook-circle:before{content:""}.ni-instagram:before{content:""}.ni-instagram-round:before{content:""}.ni-linkedin:before{content:""}.ni-linkedin-round:before{content:""}.ni-twitter:before{content:""}.ni-twitter-round:before{content:""}.ni-pinterest:before{content:""}.ni-pinterest-round:before{content:""}.ni-pinterest-circle:before{content:""}.ni-tumblr:before{content:""}.ni-tumblr-round:before{content:""}.ni-skype:before{content:""}.ni-viber:before{content:""}.ni-whatsapp:before{content:""}.ni-whatsapp-round:before{content:""}.ni-snapchat:before{content:""}.ni-snapchat-fill:before{content:""}.ni-telegram:before{content:""}.ni-telegram-circle:before{content:""}.ni-youtube-line:before{content:""}.ni-youtube:before{content:""}.ni-youtube-fill:before{content:""}.ni-youtube-round:before{content:""}.ni-vimeo:before{content:""}.ni-vimeo-fill:before{content:""}.com{color:#93a1a1}.lit{color:#195f91}.pun,.opn,.clo{color:#93a1a1}.fun{color:#dc322f}.str,.atv{color:#d14}.kwd,.linenums .tag{color:#1e347b}.typ,.atn,.dec,.var{color:teal}.pln{color:#48484c}.prettyprint{padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;-moz-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}ol.linenums{margin:0 0 0 33px}ol.linenums li{padding-left:12px;color:#bebec5;line-height:18px;text-shadow:0 1px 0 #fff}.select2{width:100% !important;display:inline-block}.select2-container{box-sizing:border-box;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:calc(2.125rem + 2px);user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container.select2-lg .select2-selection--multiple{min-height:calc(2.625rem + 2px)}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border-radius:4px;box-shadow:none;border:1px solid #dbdfea;font-family:Roboto,sans-serif;font-size:13px;font-weight:400;display:block;position:absolute;left:-100000px;z-index:1051;padding:6px}.select2-dropdown--below{margin-top:-1px;border-radius:0 0 4px 4px}.select2-dropdown--above{margin-top:1px;border-radius:4px 4px 0 0}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0;border-radius:4px 4px}.select2-results__option{padding:.375rem .75rem;border-radius:4px;user-select:none;-webkit-user-select:none}.select2-results__option:not(:last-child){margin-bottom:.125rem}.select2-results__option[aria-selected]{cursor:pointer}.select2-lg .select2-results__option{padding:.5rem .75rem}.select2-container--open .select2-dropdown{left:0;border-color:#b4bdd3}.select2-search--dropdown{display:block;padding:0}.select2-search--dropdown .select2-search__field{padding:.375rem .75rem;width:100%;border-radius:4px;margin-bottom:6px;color:#526484}.select2-search--dropdown .select2-search__field:focus{outline:none;border-color:#0fac81}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-lg .select2-search--dropdown .select2-search__field{padding:.5rem .75rem}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{height:calc(2.125rem + 2px);font-family:Roboto,sans-serif;font-size:13px;font-weight:400;background-color:#fff;border:1px solid #dbdfea;border-radius:4px;box-shadow:none;transition:all .3s}.select2-sm .select2-container--default .select2-selection--single{font-size:12px}.select2-lg .select2-container--default .select2-selection--single{font-size:15px}.select2-xl .select2-container--default .select2-selection--single{font-size:15px}.select2-container--default .select2-selection--single:focus{box-shadow:0 0 0 3px rgba(15,172,129,.1);border-color:#0fac81;outline:none}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#526484;line-height:1.25rem;padding:.4375rem calc(2.125rem + 2px) .4375rem 1rem}.select2-container--default .select2-selection--single .select2-selection__rendered:focus{outline:none}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#8094ae}.select2-container--default .select2-selection--single .select2-selection__arrow{height:calc(2.125rem + 2px);position:absolute;top:0;right:0;width:calc(2.125rem + 2px);display:flex;align-items:center;justify-content:center}.select2-container--default .select2-selection--single .select2-selection__arrow:after{font-family:"Nioicon";content:"";line-height:1}.select2-container--default .select2-selection--single .select2-selection__arrow b{display:none}.select2-container--default.select2-sm .select2-selection--single{height:calc(1.75rem + 2px);font-size:12px}.select2-container--default.select2-sm .select2-selection--single .select2-selection__rendered{line-height:1.25rem;padding:.25rem calc(1.75rem + 2px) .25rem 1rem}.select2-container--default.select2-sm .select2-selection--single .select2-selection__arrow{height:calc(1.75rem + 2px);width:calc(1.75rem + 2px)}.select2-container--default.select2-lg .select2-selection--single{height:calc(2.625rem + 2px);font-size:15px}.select2-container--default.select2-lg .select2-selection--single .select2-selection__rendered{line-height:1.25rem;padding:.6875rem calc(2.625rem + 2px) .6875rem 1rem}.select2-container--default.select2-lg .select2-selection--single .select2-selection__arrow{height:calc(2.625rem + 2px);width:calc(2.625rem + 2px)}.select2-container--default.select2-xl .select2-selection--single{height:calc(3.25rem + 2px);font-size:15px}.select2-container--default.select2-xl .select2-selection--single .select2-selection__rendered{line-height:2rem;padding:.625rem calc(3.25rem + 2px) .625rem 1.25rem}.select2-container--default.select2-xl .select2-selection--single .select2-selection__arrow{height:calc(3.25rem + 2px);width:calc(3.25rem + 2px)}.select2-container--default.select2-container--below.select2-container--open .select2-selection--single{border-radius:4px 4px 0 0}.select2-container--default.select2-container--above.select2-container--open .select2-selection--single{border-radius:0 0 4px 4px}.select2-container--default.select2-container--disabled .select2-selection--single{border-color:#dbdfea;background-color:rgba(219,223,234,.3);cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single{border-color:#b4bdd3 !important}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow:after{content:""}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #dbdfea;border-radius:4px;font-family:Roboto,sans-serif;font-size:13px;font-weight:400;cursor:text}.select2-container--default .select2-selection--multiple .select2-search--inline input::placeholder{color:#8094ae}.select2-container--default .select2-selection--multiple .select2-search--inline .select2-search__field{padding-left:.8125rem !important}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:.125rem .1875rem;width:100%;display:inline-flex;flex-wrap:wrap}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;font-weight:bold;margin-top:5px;float:right;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e5e9f2;border-radius:3px;cursor:default;line-height:1.5rem;margin:.1875rem .1875rem;padding:0 .5rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#526484;cursor:pointer;display:inline-block;font-weight:bold;margin-right:.5rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#526484}.select2-container--default.select2-lg .select2-selection--multiple{font-size:15px}.select2-container--default.select2-lg .select2-selection--multiple .select2-selection__choice{border-radius:4px;padding:.25rem .75rem}.select2-container--default.select2-container--below.select2-container--open .select2-selection--multiple{border-radius:4px 4px 0 0}.select2-container--default.select2-container--above.select2-container--open .select2-selection--multiple{border-radius:0 0 4px 4px}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #0fac81;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{border-color:#dbdfea;background-color:rgba(219,223,234,.3);cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open .select2-selection--multiple{border-color:#b4bdd3}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #dbdfea}.select2-container--default .select2-search--inline .select2-search__field{background:rgba(0,0,0,0);border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:210px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:rgba(128,148,174,.7)}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#e5e9f2}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#e5e9f2}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}[data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto !important;height:auto !important;z-index:0}.simplebar-offset{direction:inherit !important;box-sizing:inherit !important;resize:none !important;position:absolute;top:0;left:0 !important;bottom:0;right:0 !important;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper,.simplebar-scroll-content{direction:inherit;box-sizing:border-box !important;position:relative;display:block;height:100%;width:auto;visibility:visible;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none;overflow:hidden scroll}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-scroll-content::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:before,.simplebar-content:after{content:" ";display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit !important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar .hidden-scrollbar{visibility:hidden}.simplebar-scrollbar:before{position:absolute;content:"";background:#8094ae;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition:opacity 0s linear}.simplebar-track.simplebar-vertical{top:0;width:8px !important;transition:width .1s}.simplebar-track.simplebar-vertical.simplebar-hover{width:10px !important}.simplebar-track.simplebar-vertical .nk-sidebar{visibility:hidden !important}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:8px !important;transition:height .1s}.simplebar-track.simplebar-horizontal.simplebar-hover{height:10px !important}.nk-sidebar .simplebar-track.simplebar-horizontal,.nk-sidebar-fat .simplebar-track.simplebar-horizontal,.nk-apps-sidebar .simplebar-track.simplebar-horizontal{visibility:hidden !important}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:rgba(0,0,0,0)}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.slick-track{position:relative;left:0;top:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid rgba(0,0,0,0)}.slick-slide:focus{outline:none;border:none}.slick-slide.col{padding-left:14px;padding-right:14px}.slick-arrow.slick-hidden{display:none}.slick-dots{display:flex;justify-content:center;padding-top:1.5rem}.slick-dots li{display:inline-flex;padding:0 6px}.slick-dots li button{background-color:#dbdfea;border:none;border-radius:20px;text-indent:-99999px;height:8px;width:8px;padding:0;overflow:hidden;transition:all .4s linear}.slick-dots li button:focus{outline:none}.slick-dots li.slick-active button{background-color:#8094ae}.slick-next,.slick-prev{position:absolute;top:50%;transform:translateY(-50%);display:inline-flex;justify-content:center;align-items:center;border-radius:50%;height:44px;width:44px;z-index:9;font-size:24px;color:#8094ae;background:#fff;transition:all .4s linear;border:1px solid #e5e9f2}.slick-next:hover,.slick-prev:hover{color:#526484;background:#f5f6fa;border-color:#dbdfea;opacity:1}.slick-disabled .slick-next,.slick-disabled .slick-prev{cursor:default;color:#dbdfea}.slick-disabled .slick-next:hover,.slick-disabled .slick-prev:hover{color:#dbdfea;background:#fff;border-color:#e5e9f2}.slick-next{right:5px}.slick-prev{left:5px}@media(min-width: 576px){.slick-next{right:-10px}.slick-prev{left:-10px}}.datepicker{padding:10px;border-radius:4px;direction:ltr;border:1px solid #dbdfea;box-shadow:none;min-width:240px}.datepicker .table-condensed{width:100%}.datepicker-inline{width:220px}.datepicker-rtl{direction:rtl}.datepicker-rtl.dropdown-menu{left:auto}.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:"";display:inline-block;border-left:7px solid rgba(0,0,0,0);border-right:7px solid rgba(0,0,0,0);border-bottom:7px solid #999;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:"";display:inline-block;border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:34px;height:24px;padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none;transition:all .3s}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:rgba(0,0,0,0)}.datepicker table tr td.day:hover,.datepicker table tr td.day.focused{background:#ebeef2;cursor:pointer}.datepicker table tr td.old,.datepicker table tr td.new{color:#dbdfea}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:none;color:#dbdfea;cursor:default}.datepicker table tr td.highlighted{background:#ebeef2;border-radius:0}.datepicker table tr td.today,.datepicker table tr td.today:hover,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover{background-color:#cfeee6;color:#0fac81}.datepicker table tr td.today:hover,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today[disabled],.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled:hover[disabled]{background-color:#3fbd9a}.datepicker table tr td.today:active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:hover.active{background-color:#0fac81}.datepicker table tr td.today:hover:hover{color:#fff}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range:hover,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover{background:#dbdfea;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover{background-color:#6fcdb3;border-radius:0}.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled:hover[disabled]{background-color:#3fbd9a}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:hover.active{background-color:#0fac81 \9 }.datepicker table tr td.selected,.datepicker table tr td.selected:hover,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover{background-color:#3c4d62;color:#fff}.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled:hover[disabled]{background-color:#344357}.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:hover.active{background-color:#2b3748 \9 }.datepicker table tr td.active,.datepicker table tr td.active:hover,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover{background-color:#3fbd9a;color:#fff}.datepicker table tr td.active:hover,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active[disabled],.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled:hover[disabled]{background-color:#0fac81}.datepicker table tr td.active:active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:hover.active{background-color:#0fac81}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;transition:all .3s}.datepicker table tr td span:hover,.datepicker table tr td span.focused{background:#0fac81;color:#fff}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:none;color:#dbdfea;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{background-color:#3fbd9a;color:#fff}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled:hover[disabled]{background-color:#0fac81}.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover.active{background-color:#0fac81 \9 }.datepicker table tr td span.old,.datepicker table tr td span.new{color:#dbdfea}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .prev,.datepicker .next,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .prev:hover,.datepicker .next:hover,.datepicker tfoot tr th:hover{background:#ebeef2}.datepicker .prev.disabled,.datepicker .next.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#ebeef2;border:1px solid #ccc;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{z-index:99999 !important}.ui-timepicker-container{position:absolute;overflow:hidden;box-sizing:border-box;z-index:1052 !important}.ui-timepicker{box-sizing:content-box;display:block;height:205px;list-style:none outside none;margin:0;padding:0 1px;text-align:center}.ui-timepicker-viewport{box-sizing:content-box;display:block;height:205px;margin:0;padding:0;overflow:auto;overflow-x:hidden}.ui-timepicker-standard{font-size:1.1em;background-color:#fff;border:1px solid #dbdfea;color:#526484;margin:0;padding:6px}.ui-timepicker-standard a{border:none;color:#526484;display:block;padding:.375rem .75rem;text-decoration:none}.ui-timepicker-standard .ui-state-hover{background-color:#ebeef2;border:none;font-weight:normal;color:#364a63;cursor:pointer;border-radius:4px}.ui-timepicker-standard .ui-menu-item{margin:0;padding:0}.ui-timepicker-corners,.ui-timepicker-corners .ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-timepicker-hidden{display:none}.ui-timepicker-no-scrollbar .ui-timepicker{border:none}@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px dashed #e5e9f2;border-radius:4px;background:#fff;padding:20px 20px}.dropzone.small{min-height:86px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:1em 0}.dropzone .dz-message span{display:block;color:rgba(82,100,132,.6)}.dropzone .dz-message-text{font-size:13px}.dropzone .dz-message-text span{display:inline-block;color:#0fac81}.dropzone .dz-message-or{font-size:16px;margin-bottom:4px;text-transform:uppercase}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-ms-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:rgba(255,255,255,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid rgba(0,0,0,0)}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05, 1.05);-moz-transform:scale(1.05, 1.05);-ms-transform:scale(1.05, 1.05);-o-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-ms-transition:all .2s linear;-o-transition:all .2s linear;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity .4s ease-in;-moz-transition:opacity .4s ease-in;-ms-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom, #666, #444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width 300ms ease-in-out;-moz-transition:width 300ms ease-in-out;-ms-transition:width 300ms ease-in-out;-o-transition:width 300ms ease-in-out;transition:width 300ms ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity .3s ease;-moz-transition:opacity .3s ease;-ms-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);padding:.5em 1.2em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #be2626}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-connect{height:100%;width:100%}.noUi-origin{height:10%;width:10%}.noUi-vertical .noUi-origin{width:100%}.noUi-horizontal .noUi-origin{height:100%}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-handle:focus{outline:none}.noUi-touch-area{height:100%;width:100%}.noUi-touch-area:focus{outline:none}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit !important}.noUi-horizontal{height:8px}.noUi-horizontal .noUi-handle{width:28px;height:28px;right:-14px;top:50%;transform:translateY(-50%)}.noUi-vertical{width:8px;height:200px}.noUi-vertical .noUi-handle{width:28px;height:28px;left:50%;top:-14px;transform:translateX(-50%)}.noUi-target{background:#dbdfea;border-radius:4px}.noUi-connects{border-radius:3px}.noUi-connect{background:#0fac81}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #dbdfea;border-radius:50%;background:#fff;cursor:default;box-shadow:0 3px 12px 1px rgba(43,55,72,.15)}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:before,.noUi-handle:after{content:"";display:block;position:absolute;height:10px;width:1px;background:#dbdfea;left:50%;top:50%;transform:translate(-50%, -50%)}.noUi-horizontal .noUi-handle:before{margin-left:-2px}.noUi-horizontal .noUi-handle:after{margin-left:2px}.noUi-vertical .noUi-handle:before,.noUi-vertical .noUi-handle:after{width:10px;height:1px}.noUi-vertical .noUi-handle:before{margin-top:-2px}.noUi-vertical .noUi-handle:after{margin-top:2px}[disabled] .noUi-connect{background:#e5e9f2}[disabled].noUi-target,[disabled].noUi-handle,[disabled] .noUi-handle{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#ccc}.noUi-marker-sub{background:#aaa}.noUi-marker-large{background:#aaa}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%, 50%);transform:translate(-50%, 50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0, -50%);transform:translate(0, -50%);padding-left:25px}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#1f2b3a;color:#fff;padding:.25rem .75rem;text-align:center;white-space:nowrap;font-size:13px;opacity:0;transition:all .3s ease}.noUi-handle:hover .noUi-tooltip{opacity:.9}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0, -50%);transform:translate(0, -50%);top:50%;right:120%}#toast-container{position:fixed;z-index:999999;pointer-events:none;padding:1.25rem;width:100%}#toast-container[class*=-center] .toastr{margin-left:auto;margin-right:auto}#toast-container[class*=-left] .toastr{margin-right:auto}#toast-container[class*=-right] .toastr{margin-left:auto}#toast-container[class*=-full] .toastr{width:100%}#toast-container[class*=toast-top]{top:0}#toast-container[class*=toast-bottom]{bottom:0}.toastr{position:relative;pointer-events:auto;background:#fff;box-shadow:0 3px 12px 1px rgba(43,55,72,.15);border-radius:4px;opacity:1;border-left:4px solid rgba(0,0,0,0);padding:1.25rem 4.5rem 1.25rem 1.25rem;width:430px;max-width:100%;font-size:.875rem;line-height:1.3rem}.is-dark .toastr{background:#101924;color:#fff}.toastr:not(:last-child){margin-bottom:.75rem}.toastr.toast-success{border-color:#1ee0ac}.toastr.toast-success .icon{color:#1ee0ac}.toastr.toast-error{border-color:#e85347}.toastr.toast-error .icon{color:#e85347}.toastr.toast-info{border-color:#09c2de}.toastr.toast-info .icon{color:#09c2de}.toastr.toast-warning{border-color:#f4bd0e}.toastr.toast-warning .icon{color:#f4bd0e}.toastr-icon{position:absolute;left:1.25rem;top:50%;transform:translateY(-50%);font-size:24px;line-height:1}.toastr-icon+.toastr-text{padding-left:2.35rem}.toastr h4,.toastr .h4,.toastr h5,.toastr .h5,.toastr h6,.toastr .h6{margin-bottom:.35rem;font-size:1rem}.is-dark .toastr h4,.is-dark .toastr .h4,.is-dark .toastr h5,.is-dark .toastr .h5,.is-dark .toastr h6,.is-dark .toastr .h6{color:#fff}.toast-close-button{position:absolute;right:12px;top:50%;transform:translateY(-50%);display:inline-block;height:32px;width:32px;text-indent:-9999px;cursor:pointer}.toast-close-button:after{position:absolute;top:0;left:0;text-indent:0;color:#8094ae;font-family:"Nioicon";content:"";font-size:18px;line-height:32px;width:100%;text-align:center}.is-dark .toast-close-button:after{color:#dbdfea}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.toast-title{font-weight:bold}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#526484}.toast-message a:hover{color:#ccc;text-decoration:none}.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto !important;width:auto;height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-actions .btn,.swal2-popup.swal2-toast .swal2-actions .dual-listbox .dual-listbox__button,.dual-listbox .swal2-popup.swal2-toast .swal2-actions .dual-listbox__button{margin:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .5em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(15,172,129,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#1ee0ac}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;border-radius:4em 0 0 4em;transform:rotate(-45deg);transform-origin:2em 2em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;border-radius:0 4em 4em 0;transform-origin:0 1.5em}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show{background:rgba(28,43,70,.4)}.swal2-container.swal2-backdrop-hide{background:rgba(0,0,0,0) !important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-start,.swal2-container.swal2-top-left{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-start,.swal2-container.swal2-center-left{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-start,.swal2-container.swal2-bottom-left{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-right>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex !important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex !important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-top,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-bottom{align-items:center}.swal2-container.swal2-grow-column.swal2-top-start,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-bottom-left{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-top-right,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-bottom-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex !important;flex:1;align-content:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.swal2-container .swal2-modal{margin:0 !important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:480px;max-width:100%;padding:2.75rem 2.5rem;border:none;border-radius:4px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:none}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#364a63;font-size:1.5rem;font-weight:700;text-align:center;text-transform:none;word-wrap:break-word}.swal2-html-container{margin-bottom:1rem}.swal2-actions{display:flex;z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1rem auto 0}.swal2-actions .btn,.swal2-actions .dual-listbox .dual-listbox__button,.dual-listbox .swal2-actions .dual-listbox__button{margin:0 .75rem}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(31, 43, 58, 0.1), rgba(31, 43, 58, 0.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(31, 43, 58, 0.2), rgba(31, 43, 58, 0.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid rgba(0,0,0,0);border-radius:100%;border-color:rgba(0,0,0,0);background-color:rgba(0,0,0,0) !important;color:rgba(0,0,0,0);cursor:default;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:"";display:inline-block;width:15px;height:15px;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #b4c4d7;border-radius:50%;margin-left:5px;border-right-color:rgba(0,0,0,0);box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.5rem;box-shadow:none;padding:.5rem 1rem;font-size:.9375rem;line-height:1.25rem;border-radius:5px;min-width:90px}.swal2-loading .swal2-styled{min-width:0}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#1ee0ac;color:#fff}.swal2-styled.swal2-confirm:focus{outline:none}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#e85347;color:#fff}.swal2-styled.swal2-cancel:focus{outline:none}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#5a7ca7;font-size:1em}.swal2-timer-progress-bar{position:absolute;bottom:0;left:0;width:100%;height:.25em;background:rgba(31,43,58,.2)}.swal2-image{max-width:100%;margin:0 auto 1.5rem}.swal2-close{position:absolute;z-index:2;top:0;right:0;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;outline:initial;background:rgba(0,0,0,0);color:#f7f8fa;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:rgba(0,0,0,0);color:#e85347}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0;color:#8094ae;font-size:.875rem;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word}.swal2-input,.swal2-file,.swal2-textarea,.swal2-select,.swal2-radio,.swal2-checkbox{margin:1rem auto}.swal2-input,.swal2-file,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #dbdfea;border-radius:4px;background:inherit;box-shadow:none;color:inherit;font-size:.875rem}.swal2-input.swal2-inputerror,.swal2-file.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#e85347 !important;box-shadow:0 0 2px #e85347 !important}.swal2-input:focus,.swal2-file:focus,.swal2-textarea:focus{border:1px solid #0fac81;outline:none;box-shadow:0 0 0 3px rgba(15,172,129,.1)}.swal2-input::placeholder,.swal2-file::placeholder,.swal2-textarea::placeholder{color:#f7f8fa}.swal2-range{margin:1rem auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.75rem;padding:0;font-size:.875rem;line-height:2.75rem}.swal2-input{height:2.75rem;padding:0 1rem}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:.875rem}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:.875rem}.swal2-radio,.swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-radio label,.swal2-checkbox label{margin:0 .6em;font-size:.875rem}.swal2-radio input,.swal2-checkbox input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#fff;color:#728fb3;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#e85347;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:-0.5rem auto 1.5rem;border:.25em solid rgba(0,0,0,0);border-radius:50%;font-family:inherit;line-height:5em;cursor:default;user-select:none;transform:scale(0.8)}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#e85347;color:#e85347}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#e85347}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#f6c630;color:#f4bd0e}.swal2-icon.swal2-info{border-color:#55e3f8;color:#09c2de}.swal2-icon.swal2-question{border-color:#8798b5;color:#526484}.swal2-icon.swal2-success{border-color:#1ee0ac;color:#1ee0ac}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(30,224,172,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#1ee0ac}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.875em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports(-ms-accelerator: true){.swal2-range input{width:100% !important}.swal2-range output{display:none}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.swal2-range input{width:100% !important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(15,172,129,.4)}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{opacity:0;transform:translate(0, 20px)}40%{opacity:1}100%{transform:translate(0, 0)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.7);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:scale(0.8) rotateX(100deg);opacity:0}100%{transform:scale(0.8) rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - 0.625em * 2);background-color:rgba(0,0,0,0) !important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(28,43,70,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-start,body.swal2-no-backdrop .swal2-container.swal2-top-left{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%, -50%)}body.swal2-no-backdrop .swal2-container.swal2-center-start,body.swal2-no-backdrop .swal2-container.swal2-center-left{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-start,body.swal2-no-backdrop .swal2-container.swal2-bottom-left{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{background-color:rgba(0,0,0,0)}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;bottom:auto;right:0;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{top:0;bottom:auto;left:0;right:auto}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{top:50%;bottom:auto;right:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;bottom:auto;right:0;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{top:auto;bottom:0;right:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;bottom:0;right:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}table.dataTable{clear:both;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_length label{display:inline-flex;align-items:center}div.dataTables_wrapper div.dataTables_length span{margin-left:.5rem;margin-right:.5rem}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap}div.dataTables_wrapper div.dataTables_filter input{display:inline-block}div.dataTables_wrapper div.dataTables_info{padding:.5rem 0;white-space:nowrap;font-size:.75rem}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;justify-content:center}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;margin-left:-100px;width:200px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_wrapper label{margin-bottom:0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;top:50%;transform:translateY(-50%);display:block;opacity:.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"↑"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:.5em;content:"↓"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:before,div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}@media(min-width: 768px){div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:flex-start}}table.dataTable.dtr-inline.collapsed>tbody>tr:not(.child)>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr:not(.child)>th:first-child{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr:not(.child)>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr:not(.child)>th:first-child:before{content:"";font-family:"Nioicon";margin-right:.4rem}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:""}@media(max-width: 575px){div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:flex-start}div.dataTables_wrapper div.dataTables_paginate ul.pagination li:not(.previous):not(.next){display:none}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-link{padding-left:1rem;padding-right:1rem}div.dataTables_wrapper div.dataTables_info{text-align:right !important}}.dataTable td:focus{outline:none}.datatable-wrap{border:1px solid #e5e9f2;border-radius:4px}.dtr-details{padding-left:.25rem}.dtr-details .dtr-title{font-weight:700;margin-right:.25rem}.nk-tb-col-check,.nk-tb-col-tools{pointer-events:none}.nk-tb-col-check>*,.nk-tb-col-tools>*{pointer-events:auto}.nk-tb-col-check:before,.nk-tb-col-check:after,.nk-tb-col-tools:before,.nk-tb-col-tools:after{display:none !important}.nk-tb-col-check{padding-right:.5rem !important}@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:#f5f6fa;box-shadow:0 0 0 200vh rgba(31,43,58,.3);border-radius:4px;text-align:center;z-index:2020;overflow:hidden;border:1px solid #e5e9f2}div.dt-button-info h2,div.dt-button-info .h2{padding:2rem;margin:0;font-weight:normal;border-bottom:1px solid #e5e9f2;background-color:#fff;font-size:1.75rem}div.dt-button-info>div{padding:1.25rem}div.dt-button-collection-title{text-align:center;padding:.3em 0 .5em;font-size:.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection{position:absolute;z-index:1000;width:100%}div.dt-button-collection div.dropdown-menu{display:block;z-index:1001;min-width:100px;top:10px}.dropdown-position-right div.dt-button-collection div.dropdown-menu{right:0;left:auto}div.dt-button-collection div.dt-button-collection-title{background-color:#fff;border:1px solid rgba(0,0,0,.15)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.fixed{max-width:none}div.dt-button-collection.fixed:before,div.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;background-color:rgba(31,43,58,.3);display:none !important}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:.5em}div.dt-buttons a.btn,div.dt-buttons .dual-listbox a.dual-listbox__button,.dual-listbox div.dt-buttons a.dual-listbox__button{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons .dual-listbox button.processing.dual-listbox__button,.dual-listbox div.dt-buttons button.processing.dual-listbox__button,div.dt-buttons div.btn.processing,div.dt-buttons .dual-listbox div.processing.dual-listbox__button,.dual-listbox div.dt-buttons div.processing.dual-listbox__button,div.dt-buttons a.btn.processing,div.dt-buttons .dual-listbox a.processing.dual-listbox__button,.dual-listbox div.dt-buttons a.processing.dual-listbox__button{color:rgba(0,0,0,.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons .dual-listbox button.processing.dual-listbox__button:after,.dual-listbox div.dt-buttons button.processing.dual-listbox__button:after,div.dt-buttons div.btn.processing:after,div.dt-buttons .dual-listbox div.processing.dual-listbox__button:after,.dual-listbox div.dt-buttons div.processing.dual-listbox__button:after,div.dt-buttons a.btn.processing:after,div.dt-buttons .dual-listbox a.processing.dual-listbox__button:after,.dual-listbox div.dt-buttons a.processing.dual-listbox__button:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid #282828;border-radius:50%;border-left-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0);animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}.dt-buttons .btn-secondary span{display:none}.dt-buttons .btn-secondary:before{font-size:1.125rem;font-weight:normal;font-style:normal;width:2.125rem;font-family:"Nioicon"}.dt-export-title{margin-left:.5rem;margin-right:.5rem}.buttons-copy:before{content:""}.buttons-pdf:before{content:""}.buttons-excel:before{content:""}.buttons-csv:before{content:""}.buttons-print:before{content:""}.buttons-colvis:before{content:""}.buttons-columnVisibility{position:relative;padding-right:42px;font-size:12px;font-weight:500;color:#526484;transition:all .4s}.buttons-columnVisibility.active:not(:hover){color:#526484;background-color:rgba(0,0,0,0)}.buttons-columnVisibility.active:after{content:"";position:absolute;top:50%;transform:translateY(-50%);right:1rem;font-family:"Nioicon"}@media(max-width: 600px){.with-export>.col-5,.with-export>.col-7,.with-export>.col-sm-4,.with-export>.col-sm-8{width:100% !important;flex:0 0 100%;max-width:100%}.with-export .datatable-filter .justify-content-end,.with-export .datatable-filter .justify-end{justify-content:space-between !important}.with-export .dataTables_filter label{display:block}.with-export .dataTables_filter .form-control,.with-export .dataTables_filter .dual-listbox .dual-listbox__search,.dual-listbox .with-export .dataTables_filter .dual-listbox__search,.with-export div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper .with-export div.dataTables_filter input{width:100% !important}}.jqvmap-label{position:absolute;display:none;border-radius:4px;background:rgba(31,43,58,.9);color:#fff;padding:.25rem .75rem;pointer-events:none;font-size:12px}.jqvmap-pin{pointer-events:none}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;border-radius:3px;background:rgba(31,43,58,.9);padding:.125rem;color:#fff;width:1rem;height:1rem;cursor:pointer;line-height:.75rem;text-align:center}.jqvmap-zoomin{top:10px}.jqvmap-zoomout{top:30px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px}.tagify{display:flex;align-items:flex-start;flex-wrap:wrap;border:1px solid #e5e9f2;padding:3px;line-height:1.1;cursor:text;outline:none;position:relative;transition:.1s;font-size:14px}@keyframes tags--bump{30%{transform:scale(1.2)}}@keyframes rotateLoader{to{transform:rotate(1turn)}}@media(max-width: 576px){.tagify{padding:4px;font-size:12px}}.tagify:hover{border-color:#dbdfea}.tagify.tagify--focus{transition:0s;border-color:#0fac81}.tagify[readonly]{cursor:default}.tagify[readonly]>.tagify__input{visibility:hidden;width:0;margin:5px 0}.tagify[readonly] .tagify__tag__removeBtn{display:none}.tagify[readonly] .tagify__tag>div{padding:.25rem .5rem .25rem .675rem}.tagify[readonly] .tagify__tag>div::before{background:linear-gradient(45deg, #fff 25%, transparent 25%, transparent 50%, #fff 50%, #fff 75%, transparent 75%, transparent) 0/5px 5px;box-shadow:none;filter:brightness(0.95)}.tagify--loading .tagify__input::before{content:none}.tagify--loading .tagify__input::after{content:"";vertical-align:middle;margin:-2px 0 -2px .5em;opacity:1;width:.7em;height:.7em;border:3px solid;border-color:#eee #bbb #888 rgba(0,0,0,0);border-radius:50%;animation:rotateLoader .4s infinite linear}.tagify--loading .tagify__input:empty::after{margin-left:0}.tagify+input,.tagify+textarea{display:none !important}.tagify__tag{display:inline-flex;align-items:center;margin:2px;position:relative;z-index:1;outline:none;cursor:default;transition:.13s ease-out}.tagify__tag>div{vertical-align:top;box-sizing:border-box;max-width:100%;padding:.25rem .5rem .25rem .675rem;color:#526484;line-height:inherit;border-radius:15px;user-select:none;transition:.13s ease-out}.tagify__tag>div>*{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:top;min-width:var(--tag--min-width);max-width:var(--tag--max-width);transition:.8s ease,.1s color}.tagify__tag>div>*[contenteditable]{outline:none;user-select:text;cursor:text;margin:-2px;padding:2px;max-width:350px}.tagify__tag>div::before{content:"";position:absolute;border-radius:inherit;left:0;top:0;right:0;bottom:0;z-index:-1;pointer-events:none;transition:120ms ease;box-shadow:0 0 0 1.1em #fff inset;border:1px solid #e5e9f2}.tagify__tag:hover:not([readonly]) div::before{top:0;right:0;bottom:0;left:0;box-shadow:0 0 0 1.1em #f5f6fa inset}.tagify__tag.tagify--noAnim>div::before{animation:none}.tagify__tag.tagify--hide{width:0 !important;padding-left:0;padding-right:0;margin-left:0;margin-right:0;opacity:0;transform:scale(0);transition:.3s;pointer-events:none}.tagify__tag.tagify--mark div::before{animation:none}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div>span{opacity:.5}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div::before{box-shadow:0 0 0 1.1em rgba(114,128,146,.5) inset !important;transition:.2s}.tagify__tag[readonly] .tagify__tag__removeBtn{display:none}.tagify__tag[readonly]>div::before{background:linear-gradient(45deg, #fff 25%, transparent 25%, transparent 50%, #fff 50%, #fff 75%, transparent 75%, transparent) 0/5px 5px;box-shadow:none;filter:brightness(0.95);border-color:none}.tagify__tag--editable>div{color:#526484}.tagify__tag--editable>div::before{box-shadow:0 0 0 2px #f5f6fa inset !important}.tagify__tag--editable.tagify--invalid>div::before{box-shadow:0 0 0 2px #728092 inset !important}.tagify__tag__removeBtn{order:5;display:inline-flex;align-items:center;justify-content:center;border-radius:50px;cursor:pointer;font:11px "Nioicon";background:none;color:#364a63;width:14px;height:14px;margin-right:3.6666666667px;margin-left:-3.6666666667px;transition:.2s ease-out}.tagify__tag__removeBtn::after{position:relative;content:"";top:1px}.tagify__tag__removeBtn:hover{color:#fff;background:#606c7c}.tagify__tag__removeBtn:hover+div::before{transition:.2s}.tagify:not(.tagify--mix) .tagify__input br{display:none}.tagify:not(.tagify--mix) .tagify__input *{display:inline;white-space:nowrap}.tagify__input{display:block;min-width:60px;margin:2px;padding:.25rem .5rem .25rem .675rem;line-height:inherit;position:relative;white-space:pre-line}.tagify__input::before{display:inline-block;width:0}.tagify__input:empty{display:flex}.tagify__input:empty::before{transition:.2s ease-out;opacity:.7;transform:none;width:auto}.tagify__input:focus{outline:none}.tagify__input:focus::before{transition:.2s ease-out;opacity:0;transform:translatex(6px)}@supports(-moz-appearance: none){.tagify__input:focus::before{display:none}}.tagify__input:focus:empty::before{transition:.2s ease-out;opacity:.5;transform:none}@supports(-moz-appearance: none){.tagify__input:focus:empty::before{display:inline-block}}.tagify__input::before{content:attr(data-placeholder);line-height:1.8;position:absolute;top:0;z-index:1;color:#526484;white-space:nowrap;pointer-events:none;opacity:0}.tagify--mix .tagify__input::before{position:static;line-height:inherit}@supports(-moz-appearance: none){.tagify__input::before{line-height:inherit;position:relative}}.tagify__input::after{content:attr(data-suggest);display:inline-block;white-space:pre;color:#526484;opacity:.3;pointer-events:none;max-width:100px}.tagify__input .tagify__tag{margin:0}.tagify__input .tagify__tag>div{padding-top:0;padding-bottom:0}.tagify--mix{line-height:1.7}.tagify--mix .tagify__input{padding:5px;margin:0;width:100%;height:100%;line-height:inherit}.tagify--mix .tagify__input::after{content:none}.tagify--select::after{content:">";opacity:.5;position:absolute;top:50%;right:0;bottom:0;font:16px monospace;line-height:8px;height:8px;pointer-events:none;transform:translate(-150%, -50%) scaleX(1.2) rotate(90deg);transition:.2s ease-in-out}.tagify--select[aria-expanded=true]::after{transform:translate(-150%, -50%) rotate(270deg) scaleY(1.2)}.tagify--select .tagify__tag{position:absolute;top:0;right:1.8em;bottom:0}.tagify--select .tagify__tag div{display:none}.tagify--select .tagify__input{width:100%}.tagify--invalid{border-color:#728092}.tagify__dropdown{position:absolute;z-index:9999;transform:translateY(4px);overflow:hidden;box-shadow:0 1px 4px rgba(54,74,99,.1);border-radius:4px}.tagify__dropdown[placement=top]{margin-top:0;transform:translateY(-4px);box-shadow:0 -1px 4px rgba(54,74,99,.1)}.tagify__dropdown--text{box-shadow:0 0 0 3px rgba(15,172,129,.1);font-size:.9em}.tagify__dropdown--text .tagify__dropdown__wrapper{border-width:1px}.tagify__dropdown__wrapper{max-height:300px;overflow:hidden;background:#fff;border:1px solid #e5e9f2;padding:.25rem;border-radius:4px;transition:.25s cubic-bezier(0, 1, 0.5, 1)}.tagify__dropdown__wrapper:hover{overflow:auto}.tagify__dropdown--initial .tagify__dropdown__wrapper{max-height:20px;transform:translateY(-1em)}.tagify__dropdown--initial[placement=top] .tagify__dropdown__wrapper{transform:translateY(2em)}.tagify__dropdown__item{box-sizing:inherit;padding:.25rem .5rem .25rem .675rem;margin:1px;cursor:pointer;border-radius:2px;position:relative;outline:none}.tagify__dropdown__item--active{background:#0fac81;color:#fff}.tagify__dropdown__item:active{filter:brightness(105%)}.tagify__dropdown__createTagBtn{width:100%;background:#0fac81;color:#fff;border:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc *:before,.fc *:after{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc th,.fc td{vertical-align:top;padding:0}.fc .table-bordered{border-radius:4px}.fc .table-bordered th{border:1px solid #dbdfea}.fc .table-bordered td{border:1px solid #dbdfea}.fc .table-bordered thead th,.fc .table-bordered thead td{border-bottom-width:0}.fc .table-bordered thead>tr>th,.fc .table-bordered thead>tr>td{border-bottom-width:1px}.fc thead tr:first-child td:first-child,.fc thead tr:first-child th:first-child{border-radius:4px 0 0 0}.fc thead tr:first-child td:last-child,.fc thead tr:first-child th:last-child{border-radius:0 4px 0 0}.fc tbody tr:last-child td:first-child,.fc tbody tr:last-child th:first-child{border-radius:0 0 0 4px}.fc tbody tr:last-child td:last-child,.fc tbody tr:last-child th:last-child{border-radius:0 0 4px 0}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:"fcicons";src:url("data:application/x-font-ttf;charset=utf-8;base64,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") format("truetype");font-weight:normal;font-style:normal}.fc-icon,.fa{display:inline-block;width:1em;height:1em;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:"fcicons" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before,.fa-chevron-left:before{content:""}.fc-icon-chevron-right:before,.fa-chevron-right:before{content:""}.fc-icon-chevrons-left:before,.fa-chevrons-left:before{content:""}.fc-icon-chevrons-right:before,.fa-chevrons-right:before{content:""}.fc-icon-minus-square:before,.fa-minus-square:before{content:""}.fc-icon-plus-square:before,.fa-plus-square:before{content:""}.fc-icon-x:before,.fa-times:before{content:""}.fc .fc-button{border-radius:0;overflow:visible;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button::-moz-focus-inner{padding:0;border-style:none}.fc .fc-button{display:inline-block;font-weight:400;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{outline:0;box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:hover{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color, #1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color, #1a252f)}.fc .fc-button-primary:disabled{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#2c3e50;background-color:var(--fc-button-bg-color, #2C3E50);border-color:#2c3e50;border-color:var(--fc-button-border-color, #2C3E50)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled):active,.fc .fc-button-primary:not(:disabled).fc-button-active{color:#fff;color:var(--fc-button-text-color, #fff);background-color:#1a252f;background-color:var(--fc-button-active-bg-color, #1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color, #151e27)}.fc .fc-button-primary:not(:disabled):active:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc .fc-button-group{position:relative;display:inline-flex;vertical-align:middle}.fc .fc-button-group>.fc-button{position:relative;flex:1 1 auto}.fc .fc-button-group>.fc-button:hover{z-index:1}.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button.fc-button-active{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc .fc-toolbar{display:flex;justify-content:space-between;align-items:center}@media(max-width: 767.98px){.fc .fc-toolbar{flex-direction:column}}.fc .fc-toolbar.fc-header-toolbar{margin:-0.5rem 0 .75rem}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk{display:flex;align-items:center;padding:.5rem 0}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk:empty{display:none}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button,.dual-listbox .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button{position:relative;font-family:Roboto,sans-serif;font-weight:700;font-size:12px;background:rgba(0,0,0,0);color:#8094ae;border:1px solid #dbdfea;text-transform:capitalize}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:disabled,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:disabled,.dual-listbox .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:disabled{background:rgba(0,0,0,0);color:#8094ae;border:1px solid #dbdfea}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:hover,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:hover,.dual-listbox .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:hover,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:focus,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:focus,.dual-listbox .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:focus{color:#526484;background:#f5f6fa;border:1px solid #dbdfea}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:focus,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:focus,.dual-listbox .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:focus{box-shadow:0 0 0 .2rem rgba(219,223,234,.5)}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn.active,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .active.dual-listbox__button,.dual-listbox .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .active.dual-listbox__button{color:#364a63;border:1px solid #dbdfea;background:#f5f6fa;box-shadow:inset 0 0 4px -1px rgba(128,148,174,.25)}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-prev-button,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-next-button{border:none !important}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-prev-button:hover,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-prev-button:focus,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-next-button:hover,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-next-button:focus{background:rgba(0,0,0,0) !important;box-shadow:none !important}@media(max-width: 767.98px){.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk{justify-content:space-between;width:100%}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-dayGridMonth-button,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-timeGridWeek-button,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-timeGridDay-button,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-listWeek-button{color:rgba(0,0,0,0) !important;width:2.125rem}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-dayGridMonth-button:before,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-timeGridWeek-button:before,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-timeGridDay-button:before,.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-listWeek-button:before{color:#8094ae;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-dayGridMonth-button:before{content:"M"}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-timeGridWeek-button:before{content:"W"}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-timeGridDay-button:before{content:"D"}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .fc-listWeek-button:before{content:"L"}.fc .fc-toolbar.fc-header-toolbar .fc-toolbar-title+.btn-group{margin-right:-0.75rem}}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.125rem;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{position:absolute;top:0;right:0;left:0;bottom:0}.fc .fc-scroller-harness{position:relative;overflow:hidden;direction:ltr}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{width:100%;table-layout:fixed}.fc .fc-scrollgrid table{border-top-style:hidden;border-left-style:hidden;border-right-style:hidden}.fc .fc-scrollgrid{border-collapse:separate;border-right-width:0;border-bottom-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section{height:1px}.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section table{height:1px}.fc .fc-scrollgrid-section-liquid{height:auto}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-top-width:0;border-left-width:0}.fc .fc-scrollgrid-section-header>*,.fc .fc-scrollgrid-section-footer>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:#fff;background:var(--fc-page-bg-color, #fff);position:-webkit-sticky;position:sticky;z-index:2}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{position:absolute;top:0;right:0;bottom:0;left:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-non-business,.fc .fc-highlight{position:absolute;top:0;left:0;right:0;bottom:0}.fc .fc-non-business{background:rgba(215,215,215,.3);background:var(--fc-non-business-color, rgba(215, 215, 215, 0.3))}.fc .fc-bg-event{background:#8fdf82;background:var(--fc-bg-event-color, rgb(143, 223, 130));opacity:.3;opacity:var(--fc-bg-event-opacity, 0.3)}.fc .fc-bg-event .fc-event-title{margin:.5em;font-size:.85em;font-size:var(--fc-small-font-size, 0.85em);font-style:italic}.fc .fc-highlight{background:rgba(188,232,241,.3);background:var(--fc-highlight-color, rgba(188, 232, 241, 0.3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3))}.fc .fc-event{padding:.125rem .375rem;margin:.5rem .375rem}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event[href],.fc-event.fc-event-draggable{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event:hover .fc-event-resizer,.fc-event-selected .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width, 8px)/2);border-width:1px;border-width:var(--fc-event-resizer-dot-border-width, 1px);width:8px;width:var(--fc-event-resizer-dot-total-width, 8px);height:8px;height:var(--fc-event-resizer-dot-total-width, 8px);border-style:solid;border-color:inherit;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-event-selected .fc-event-resizer:before{content:"";position:absolute;top:-20px;left:-20px;right:-20px;bottom:-20px}.fc-event-selected{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before{content:"";position:absolute;z-index:3;top:0;left:0;right:0;bottom:0}.fc-event-selected:after{content:"";background:rgba(0,0,0,.25);background:var(--fc-event-selected-overlay-color, rgba(0, 0, 0, 0.25));position:absolute;z-index:1;top:-1px;left:-1px;right:-1px;bottom:-1px}.fc-h-event{display:block;border:1px solid #0fac81;background-color:#0fac81}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;vertical-align:top;left:0;right:0;max-width:100%;overflow:hidden}.fc-h-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{top:0;bottom:0;width:8px;width:var(--fc-event-resizer-thickness, 8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness, 8px)/-2)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness, 8px)/-2)}.fc-h-event.fc-event-selected .fc-event-resizer{top:50%;margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width, 8px)/-2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width, 8px)/-2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width, 8px)/-2)}:root{--fc-daygrid-event-dot-width: 8px}.fc .fc-popover{position:fixed;top:0;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc .fc-popover-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-theme-standard .fc-popover{border:1px solid #ddd;border:1px solid var(--fc-border-color, #ddd);background:#fff;background:var(--fc-page-bg-color, #fff)}.fc-theme-standard .fc-popover-header{background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3))}.fc-daygrid-day-frame:before,.fc-daygrid-day-events:before,.fc-daygrid-event-harness:before{content:"";clear:both;display:table}.fc-daygrid-day-frame:after,.fc-daygrid-day-events:after,.fc-daygrid-event-harness:after{content:"";clear:both;display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:rgba(15,172,129,.07)}.fc .fc-daygrid-day-frame{position:relative;min-height:100%}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.5}.fc .fc-daygrid-day-number{position:relative;z-index:4;padding:4px}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{position:absolute;left:0;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative;min-height:2em}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{position:absolute;top:0;left:0;right:0}.fc .fc-daygrid-bg-harness{position:absolute;top:0;bottom:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{z-index:6;margin:.375rem .5rem !important}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:2px 3px 0}.fc .fc-daygrid-more-link{position:relative;z-index:4;cursor:pointer}.fc .fc-daygrid-week-number{position:absolute;z-index:5;top:0;padding:2px;min-width:1.5em;text-align:center;background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));color:gray;color:var(--fc-neutral-text-color, #808080)}.fc .fc-more-popover{z-index:8}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:.25rem}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:.25rem}.fc-direction-ltr .fc-daygrid-week-number{left:0;border-radius:0 0 3px 0}.fc-direction-rtl .fc-daygrid-week-number{right:0;border-radius:0 0 0 3px}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{position:relative;white-space:nowrap;border-radius:3px;font-size:.85em;font-size:var(--fc-small-font-size, 0.85em)}.fc-daygrid-block-event .fc-event-time{font-weight:bold}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{display:flex;align-items:center;padding:.25rem .25rem}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;min-width:0;overflow:hidden;font-weight:bold}.fc-daygrid-dot-event:hover,.fc-daygrid-dot-event.fc-event-mirror{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-daygrid-event-dot{margin:-2px 4px 0;box-sizing:content-box;width:0;height:0;border:3px solid #0fac81;border-radius:4px}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-v-event{display:block;border:1px solid #0fac81;background-color:#0fac81}.fc-v-event .fc-event-main{height:100%}.fc-v-event .fc-event-main-frame{height:100%;display:flex;flex-direction:column}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{top:0;bottom:0;max-height:100%;overflow:hidden}.fc-v-event:not(.fc-event-start){border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event:not(.fc-event-end){border-bottom-width:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:8px;height:var(--fc-event-resizer-thickness, 8px);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-thickness, 8px)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-thickness, 8px)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:-4px;margin-left:calc(var(--fc-event-resizer-dot-total-width, 8px)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-dot-total-width, 8px)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-dot-total-width, 8px)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{position:relative;z-index:1;min-height:100%}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table{position:relative;z-index:1}.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{height:1.5em;border-bottom:0;padding:.25rem}.fc .fc-timegrid-slot:empty:before{content:" "}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{overflow:hidden;display:flex;align-items:center;justify-content:flex-end}.fc .fc-timegrid-axis-cushion{max-width:60px;flex-shrink:0}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc .fc-timegrid-col.fc-day-today{background-color:rgba(15,172,129,.07)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-liquid-hack .fc-timegrid-col-frame{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc-media-screen .fc-timegrid-cols{position:absolute;top:0;left:0;right:0;bottom:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{position:absolute;top:0;left:0;right:0}.fc-media-screen .fc-timegrid-event-harness{position:absolute}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{position:absolute;left:0;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror{box-shadow:0px 0px 0px 1px #fff;box-shadow:0px 0px 0px 1px var(--fc-page-bg-color, #fff)}.fc-timegrid-event{font-size:.85em;font-size:var(--fc-small-font-size, 0.85em);border-radius:3px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{white-space:nowrap;font-size:.85em;font-size:var(--fc-small-font-size, 0.85em);margin-bottom:1px}.fc-timegrid-event-condensed .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-condensed .fc-event-time:after{content:" - "}.fc-timegrid-event-condensed .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size, 0.85em)}.fc-media-screen .fc-timegrid-event{position:absolute;top:0;bottom:1px;left:0;right:0}.fc .fc-timegrid-now-indicator-line{position:absolute;z-index:4;left:0;right:0;border-style:solid;border-color:#e85347;border-width:1px 0 0}.fc .fc-timegrid-now-indicator-arrow{position:absolute;z-index:4;margin-top:-5px;border-style:solid;border-color:#e85347}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0)}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0)}:root{--fc-list-event-dot-width: 10px;--fc-list-event-hover-bg-color: #f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd}.fc .fc-list-empty{background-color:#f5f6fa;height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:-webkit-sticky;position:sticky;top:0;background:#fff;background:var(--fc-page-bg-color, #fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-table td,.fc .fc-list-day-cushion{padding:.75rem 1rem}.fc .fc-list-table th .fc-list-day-cushion{padding:.5rem 1rem}.fc .fc-list-day-cushion:after{content:"";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;width:10px;height:10px;background-color:#0fac81;border:2px solid #0fac81;border-radius:5px}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}.fc-theme-bootstrap a:not([href]){color:inherit}.fc a.fc-event:not([href]){color:#fff;background:#0fac81}.fc a.fc-event:not([href]) .fc-daygrid-event-dot{border-color:#fff}.fc-prev-button,.fc-next-button{padding-left:.5rem;padding-right:.5rem}.fc-prev-button>.fa,.fc-next-button>.fa{font-size:1.25rem}span[class*=fc-event] .dot{display:inline-block;border:1px solid #0fac81;margin-right:.5rem}a.fc-event-primary{background-color:#0fac81 !important;border-color:#0fac81 !important;color:#fff !important}a.fc-event-primary .fc-daygrid-event-dot,a.fc-event-primary .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-primary{background-color:#0fac81 !important;border-color:#0fac81 !important}.modal-header.fc-event-primary .close,.modal-header.fc-event-primary .modal-title{color:#fff !important}span.fc-event-primary .dot{background-color:#0fac81 !important;border-color:#0fac81 !important}.fc-event-primary:not(a) .fc-list-event-dot{background-color:#0fac81 !important;border-color:#0fac81 !important}a.fc-event-success{background-color:#1ee0ac !important;border-color:#1ee0ac !important;color:#fff !important}a.fc-event-success .fc-daygrid-event-dot,a.fc-event-success .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-success{background-color:#1ee0ac !important;border-color:#1ee0ac !important}.modal-header.fc-event-success .close,.modal-header.fc-event-success .modal-title{color:#fff !important}span.fc-event-success .dot{background-color:#1ee0ac !important;border-color:#1ee0ac !important}.fc-event-success:not(a) .fc-list-event-dot{background-color:#1ee0ac !important;border-color:#1ee0ac !important}a.fc-event-info{background-color:#09c2de !important;border-color:#09c2de !important;color:#fff !important}a.fc-event-info .fc-daygrid-event-dot,a.fc-event-info .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-info{background-color:#09c2de !important;border-color:#09c2de !important}.modal-header.fc-event-info .close,.modal-header.fc-event-info .modal-title{color:#fff !important}span.fc-event-info .dot{background-color:#09c2de !important;border-color:#09c2de !important}.fc-event-info:not(a) .fc-list-event-dot{background-color:#09c2de !important;border-color:#09c2de !important}a.fc-event-warning{background-color:#f4bd0e !important;border-color:#f4bd0e !important;color:#fff !important}a.fc-event-warning .fc-daygrid-event-dot,a.fc-event-warning .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-warning{background-color:#f4bd0e !important;border-color:#f4bd0e !important}.modal-header.fc-event-warning .close,.modal-header.fc-event-warning .modal-title{color:#fff !important}span.fc-event-warning .dot{background-color:#f4bd0e !important;border-color:#f4bd0e !important}.fc-event-warning:not(a) .fc-list-event-dot{background-color:#f4bd0e !important;border-color:#f4bd0e !important}a.fc-event-danger{background-color:#e85347 !important;border-color:#e85347 !important;color:#fff !important}a.fc-event-danger .fc-daygrid-event-dot,a.fc-event-danger .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-danger{background-color:#e85347 !important;border-color:#e85347 !important}.modal-header.fc-event-danger .close,.modal-header.fc-event-danger .modal-title{color:#fff !important}span.fc-event-danger .dot{background-color:#e85347 !important;border-color:#e85347 !important}.fc-event-danger:not(a) .fc-list-event-dot{background-color:#e85347 !important;border-color:#e85347 !important}a.fc-event-secondary{background-color:#364a63 !important;border-color:#364a63 !important;color:#fff !important}a.fc-event-secondary .fc-daygrid-event-dot,a.fc-event-secondary .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-secondary{background-color:#364a63 !important;border-color:#364a63 !important}.modal-header.fc-event-secondary .close,.modal-header.fc-event-secondary .modal-title{color:#fff !important}span.fc-event-secondary .dot{background-color:#364a63 !important;border-color:#364a63 !important}.fc-event-secondary:not(a) .fc-list-event-dot{background-color:#364a63 !important;border-color:#364a63 !important}a.fc-event-dark{background-color:#1f2b3a !important;border-color:#1f2b3a !important;color:#fff !important}a.fc-event-dark .fc-daygrid-event-dot,a.fc-event-dark .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-dark{background-color:#1f2b3a !important;border-color:#1f2b3a !important}.modal-header.fc-event-dark .close,.modal-header.fc-event-dark .modal-title{color:#fff !important}span.fc-event-dark .dot{background-color:#1f2b3a !important;border-color:#1f2b3a !important}.fc-event-dark:not(a) .fc-list-event-dot{background-color:#1f2b3a !important;border-color:#1f2b3a !important}a.fc-event-blue{background-color:#559bfb !important;border-color:#559bfb !important;color:#fff !important}a.fc-event-blue .fc-daygrid-event-dot,a.fc-event-blue .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-blue{background-color:#559bfb !important;border-color:#559bfb !important}.modal-header.fc-event-blue .close,.modal-header.fc-event-blue .modal-title{color:#fff !important}span.fc-event-blue .dot{background-color:#559bfb !important;border-color:#559bfb !important}.fc-event-blue:not(a) .fc-list-event-dot{background-color:#559bfb !important;border-color:#559bfb !important}a.fc-event-azure{background-color:#1676fb !important;border-color:#1676fb !important;color:#fff !important}a.fc-event-azure .fc-daygrid-event-dot,a.fc-event-azure .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-azure{background-color:#1676fb !important;border-color:#1676fb !important}.modal-header.fc-event-azure .close,.modal-header.fc-event-azure .modal-title{color:#fff !important}span.fc-event-azure .dot{background-color:#1676fb !important;border-color:#1676fb !important}.fc-event-azure:not(a) .fc-list-event-dot{background-color:#1676fb !important;border-color:#1676fb !important}a.fc-event-indigo{background-color:#2c3782 !important;border-color:#2c3782 !important;color:#fff !important}a.fc-event-indigo .fc-daygrid-event-dot,a.fc-event-indigo .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-indigo{background-color:#2c3782 !important;border-color:#2c3782 !important}.modal-header.fc-event-indigo .close,.modal-header.fc-event-indigo .modal-title{color:#fff !important}span.fc-event-indigo .dot{background-color:#2c3782 !important;border-color:#2c3782 !important}.fc-event-indigo:not(a) .fc-list-event-dot{background-color:#2c3782 !important;border-color:#2c3782 !important}a.fc-event-purple{background-color:#816bff !important;border-color:#816bff !important;color:#fff !important}a.fc-event-purple .fc-daygrid-event-dot,a.fc-event-purple .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-purple{background-color:#816bff !important;border-color:#816bff !important}.modal-header.fc-event-purple .close,.modal-header.fc-event-purple .modal-title{color:#fff !important}span.fc-event-purple .dot{background-color:#816bff !important;border-color:#816bff !important}.fc-event-purple:not(a) .fc-list-event-dot{background-color:#816bff !important;border-color:#816bff !important}a.fc-event-pink{background-color:#ff63a5 !important;border-color:#ff63a5 !important;color:#fff !important}a.fc-event-pink .fc-daygrid-event-dot,a.fc-event-pink .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-pink{background-color:#ff63a5 !important;border-color:#ff63a5 !important}.modal-header.fc-event-pink .close,.modal-header.fc-event-pink .modal-title{color:#fff !important}span.fc-event-pink .dot{background-color:#ff63a5 !important;border-color:#ff63a5 !important}.fc-event-pink:not(a) .fc-list-event-dot{background-color:#ff63a5 !important;border-color:#ff63a5 !important}a.fc-event-orange{background-color:#ffa353 !important;border-color:#ffa353 !important;color:#fff !important}a.fc-event-orange .fc-daygrid-event-dot,a.fc-event-orange .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-orange{background-color:#ffa353 !important;border-color:#ffa353 !important}.modal-header.fc-event-orange .close,.modal-header.fc-event-orange .modal-title{color:#fff !important}span.fc-event-orange .dot{background-color:#ffa353 !important;border-color:#ffa353 !important}.fc-event-orange:not(a) .fc-list-event-dot{background-color:#ffa353 !important;border-color:#ffa353 !important}a.fc-event-teal{background-color:#20c997 !important;border-color:#20c997 !important;color:#fff !important}a.fc-event-teal .fc-daygrid-event-dot,a.fc-event-teal .fc-list-event-dot{border-color:#fff !important}.modal-header.fc-event-teal{background-color:#20c997 !important;border-color:#20c997 !important}.modal-header.fc-event-teal .close,.modal-header.fc-event-teal .modal-title{color:#fff !important}span.fc-event-teal .dot{background-color:#20c997 !important;border-color:#20c997 !important}.fc-event-teal:not(a) .fc-list-event-dot{background-color:#20c997 !important;border-color:#20c997 !important}a.fc-event-primary-dim{background-color:#e0f4ef !important;border-color:#e0f4ef !important;color:#0fac81 !important}a.fc-event-primary-dim .fc-daygrid-event-dot,a.fc-event-primary-dim .fc-list-event-dot{border-color:#0fac81 !important}.modal-header.fc-event-primary-dim{background-color:#e0f4ef !important;color:#0fac81 !important;border-color:#cdede5 !important}.modal-header.fc-event-primary-dim .close,.modal-header.fc-event-primary-dim .modal-title{color:#0fac81 !important}span.fc-event-primary-dim .dot{background-color:#e0f4ef !important;border-color:#0fac81 !important}.fc-event-primary-dim:not(a) .fc-list-event-dot{background-color:#e0f4ef !important;border-color:#13dba4 !important}a.fc-event-success-dim{background-color:#e2fbf4 !important;border-color:#e2fbf4 !important;color:#1ee0ac !important}a.fc-event-success-dim .fc-daygrid-event-dot,a.fc-event-success-dim .fc-list-event-dot{border-color:#1ee0ac !important}.modal-header.fc-event-success-dim{background-color:#e2fbf4 !important;color:#1ee0ac !important;border-color:#ccf8ec !important}.modal-header.fc-event-success-dim .close,.modal-header.fc-event-success-dim .modal-title{color:#1ee0ac !important}span.fc-event-success-dim .dot{background-color:#e2fbf4 !important;border-color:#1ee0ac !important}.fc-event-success-dim:not(a) .fc-list-event-dot{background-color:#e2fbf4 !important;border-color:#4ae7bd !important}a.fc-event-info-dim{background-color:#dff7fb !important;border-color:#dff7fb !important;color:#09c2de !important}a.fc-event-info-dim .fc-daygrid-event-dot,a.fc-event-info-dim .fc-list-event-dot{border-color:#09c2de !important}.modal-header.fc-event-info-dim{background-color:#dff7fb !important;color:#09c2de !important;border-color:#c8f1f8 !important}.modal-header.fc-event-info-dim .close,.modal-header.fc-event-info-dim .modal-title{color:#09c2de !important}span.fc-event-info-dim .dot{background-color:#dff7fb !important;border-color:#09c2de !important}.fc-event-info-dim:not(a) .fc-list-event-dot{background-color:#dff7fb !important;border-color:#24daf6 !important}a.fc-event-warning-dim{background-color:#fef6e0 !important;border-color:#fef6e0 !important;color:#f4bd0e !important}a.fc-event-warning-dim .fc-daygrid-event-dot,a.fc-event-warning-dim .fc-list-event-dot{border-color:#f4bd0e !important}.modal-header.fc-event-warning-dim{background-color:#fef6e0 !important;color:#f4bd0e !important;border-color:#fdefc7 !important}.modal-header.fc-event-warning-dim .close,.modal-header.fc-event-warning-dim .modal-title{color:#f4bd0e !important}span.fc-event-warning-dim .dot{background-color:#fef6e0 !important;border-color:#f4bd0e !important}.fc-event-warning-dim:not(a) .fc-list-event-dot{background-color:#fef6e0 !important;border-color:#f6ca3f !important}a.fc-event-danger-dim{background-color:#fce9e7 !important;border-color:#fce9e7 !important;color:#e85347 !important}a.fc-event-danger-dim .fc-daygrid-event-dot,a.fc-event-danger-dim .fc-list-event-dot{border-color:#e85347 !important}.modal-header.fc-event-danger-dim{background-color:#fce9e7 !important;color:#e85347 !important;border-color:#f9d4d0 !important}.modal-header.fc-event-danger-dim .close,.modal-header.fc-event-danger-dim .modal-title{color:#e85347 !important}span.fc-event-danger-dim .dot{background-color:#fce9e7 !important;border-color:#e85347 !important}.fc-event-danger-dim:not(a) .fc-list-event-dot{background-color:#fce9e7 !important;border-color:#ee7d74 !important}a.fc-event-secondary-dim{background-color:#e5ecf5 !important;border-color:#e5ecf5 !important;color:#364a63 !important}a.fc-event-secondary-dim .fc-daygrid-event-dot,a.fc-event-secondary-dim .fc-list-event-dot{border-color:#364a63 !important}.modal-header.fc-event-secondary-dim{background-color:#e5ecf5 !important;color:#364a63 !important;border-color:#d3dfee !important}.modal-header.fc-event-secondary-dim .close,.modal-header.fc-event-secondary-dim .modal-title{color:#364a63 !important}span.fc-event-secondary-dim .dot{background-color:#e5ecf5 !important;border-color:#364a63 !important}.fc-event-secondary-dim:not(a) .fc-list-event-dot{background-color:#e5ecf5 !important;border-color:#486384 !important}a.fc-event-dark-dim{background-color:#d9e1ef !important;border-color:#d9e1ef !important;color:#1f2b3a !important}a.fc-event-dark-dim .fc-daygrid-event-dot,a.fc-event-dark-dim .fc-list-event-dot{border-color:#1f2b3a !important}.modal-header.fc-event-dark-dim{background-color:#d9e1ef !important;color:#1f2b3a !important;border-color:#c7d3e7 !important}.modal-header.fc-event-dark-dim .close,.modal-header.fc-event-dark-dim .modal-title{color:#1f2b3a !important}span.fc-event-dark-dim .dot{background-color:#d9e1ef !important;border-color:#1f2b3a !important}.fc-event-dark-dim:not(a) .fc-list-event-dot{background-color:#d9e1ef !important;border-color:#31445b !important}a.fc-event-blue-dim{background-color:#e9f2fe !important;border-color:#e9f2fe !important;color:#559bfb !important}a.fc-event-blue-dim .fc-daygrid-event-dot,a.fc-event-blue-dim .fc-list-event-dot{border-color:#559bfb !important}.modal-header.fc-event-blue-dim{background-color:#e9f2fe !important;color:#559bfb !important;border-color:#d1e4fd !important}.modal-header.fc-event-blue-dim .close,.modal-header.fc-event-blue-dim .modal-title{color:#559bfb !important}span.fc-event-blue-dim .dot{background-color:#e9f2fe !important;border-color:#559bfb !important}.fc-event-blue-dim:not(a) .fc-list-event-dot{background-color:#e9f2fe !important;border-color:#87b8fc !important}a.fc-event-azure-dim{background-color:#e1edfe !important;border-color:#e1edfe !important;color:#1676fb !important}a.fc-event-azure-dim .fc-daygrid-event-dot,a.fc-event-azure-dim .fc-list-event-dot{border-color:#1676fb !important}.modal-header.fc-event-azure-dim{background-color:#e1edfe !important;color:#1676fb !important;border-color:#c8defd !important}.modal-header.fc-event-azure-dim .close,.modal-header.fc-event-azure-dim .modal-title{color:#1676fb !important}span.fc-event-azure-dim .dot{background-color:#e1edfe !important;border-color:#1676fb !important}.fc-event-azure-dim:not(a) .fc-list-event-dot{background-color:#e1edfe !important;border-color:#4893fc !important}a.fc-event-indigo-dim{background-color:#e4e5ef !important;border-color:#e4e5ef !important;color:#2c3782 !important}a.fc-event-indigo-dim .fc-daygrid-event-dot,a.fc-event-indigo-dim .fc-list-event-dot{border-color:#2c3782 !important}.modal-header.fc-event-indigo-dim{background-color:#e4e5ef !important;color:#2c3782 !important;border-color:#d4d6e6 !important}.modal-header.fc-event-indigo-dim .close,.modal-header.fc-event-indigo-dim .modal-title{color:#2c3782 !important}span.fc-event-indigo-dim .dot{background-color:#e4e5ef !important;border-color:#2c3782 !important}.fc-event-indigo-dim:not(a) .fc-list-event-dot{background-color:#e4e5ef !important;border-color:#3947a8 !important}a.fc-event-purple-dim{background-color:#efecff !important;border-color:#efecff !important;color:#816bff !important}a.fc-event-purple-dim .fc-daygrid-event-dot,a.fc-event-purple-dim .fc-list-event-dot{border-color:#816bff !important}.modal-header.fc-event-purple-dim{background-color:#efecff !important;color:#816bff !important;border-color:#dad3ff !important}.modal-header.fc-event-purple-dim .close,.modal-header.fc-event-purple-dim .modal-title{color:#816bff !important}span.fc-event-purple-dim .dot{background-color:#efecff !important;border-color:#816bff !important}.fc-event-purple-dim:not(a) .fc-list-event-dot{background-color:#efecff !important;border-color:#ac9eff !important}a.fc-event-pink-dim{background-color:#ffebf3 !important;border-color:#ffebf3 !important;color:#ff63a5 !important}a.fc-event-pink-dim .fc-daygrid-event-dot,a.fc-event-pink-dim .fc-list-event-dot{border-color:#ff63a5 !important}.modal-header.fc-event-pink-dim{background-color:#ffebf3 !important;color:#ff63a5 !important;border-color:#ffd2e4 !important}.modal-header.fc-event-pink-dim .close,.modal-header.fc-event-pink-dim .modal-title{color:#ff63a5 !important}span.fc-event-pink-dim .dot{background-color:#ffebf3 !important;border-color:#ff63a5 !important}.fc-event-pink-dim:not(a) .fc-list-event-dot{background-color:#ffebf3 !important;border-color:#ff96c2 !important}a.fc-event-orange-dim{background-color:#fff3e9 !important;border-color:#fff3e9 !important;color:#ffa353 !important}a.fc-event-orange-dim .fc-daygrid-event-dot,a.fc-event-orange-dim .fc-list-event-dot{border-color:#ffa353 !important}.modal-header.fc-event-orange-dim{background-color:#fff3e9 !important;color:#ffa353 !important;border-color:#ffe5d0 !important}.modal-header.fc-event-orange-dim .close,.modal-header.fc-event-orange-dim .modal-title{color:#ffa353 !important}span.fc-event-orange-dim .dot{background-color:#fff3e9 !important;border-color:#ffa353 !important}.fc-event-orange-dim:not(a) .fc-list-event-dot{background-color:#fff3e9 !important;border-color:#ffbe86 !important}a.fc-event-teal-dim{background-color:#e2f8f1 !important;border-color:#e2f8f1 !important;color:#20c997 !important}a.fc-event-teal-dim .fc-daygrid-event-dot,a.fc-event-teal-dim .fc-list-event-dot{border-color:#20c997 !important}.modal-header.fc-event-teal-dim{background-color:#e2f8f1 !important;color:#20c997 !important;border-color:#cdf3e7 !important}.modal-header.fc-event-teal-dim .close,.modal-header.fc-event-teal-dim .modal-title{color:#20c997 !important}span.fc-event-teal-dim .dot{background-color:#e2f8f1 !important;border-color:#20c997 !important}.fc-event-teal-dim:not(a) .fc-list-event-dot{background-color:#e2f8f1 !important;border-color:#3ce0af !important}.fc-draggable{background-color:#0fac81;border-radius:4px;margin:.75rem 0;padding:.25rem .5rem;font-size:13px;color:#fff;list-style:none;display:inline-block}.fc-day{color:#364a63}.fc-day-other{color:#526484}.fc-col-header-cell{color:#526484}.nk-kanban{overflow:auto;padding-bottom:1rem}.kanban-container{position:relative;box-sizing:border-box;width:auto;display:flex;margin-left:-14px;margin-right:-14px;overflow:auto}.kanban-container>*{touch-action:pan-y}.kanban-container *{box-sizing:border-box}.kanban-board{padding:14px;position:relative;transition:all .3s cubic-bezier(0.23, 1, 0.32, 1);flex-shrink:0}.kanban-board.disabled-board{opacity:.3}.kanban-board.is-moving.gu-mirror{transform:rotate(3deg)}.kanban-board.is-moving.gu-mirror .kanban-drag{overflow:hidden;padding-right:50px}.kanban-board-header{background:#fff;border:1px solid #e5e9f2;border-top:3px solid #dbdfea;border-radius:4px;padding:.5rem 1.25rem;margin-bottom:1rem}.kanban-primary{border-top-color:#0fac81}.kanban-success{border-top-color:#1ee0ac}.kanban-info{border-top-color:#09c2de}.kanban-warning{border-top-color:#f4bd0e}.kanban-danger{border-top-color:#e85347}.kanban-title-content{display:flex;align-items:center}.kanban-title-content .title{font-size:.9375rem;margin-bottom:0;margin-right:.75rem;color:#526484}.kanban-title-board{display:flex;align-items:center;justify-content:space-between}.kanban-board header .kanban-title-button{float:right}.kanban-board .kanban-drag{min-height:100px;margin-bottom:1rem}.kanban-board .kanban-drag:empty{border-radius:4px;border:1px dashed #e5e9f2}.kanban-board:after{clear:both;display:block;content:""}.kanban-item{border-radius:4px;border:1px solid #e5e9f2;padding:1rem 1.25rem;margin-bottom:.75rem;background:#fff;transition:all .3s cubic-bezier(0.23, 1, 0.32, 1)}.kanban-item-title{display:flex;align-items:center;justify-content:space-between}.kanban-item-title+.kanban-item-text{margin-top:.5rem}.kanban-item-title .title{font-size:.9375rem;margin-bottom:0;margin-right:.75rem}.kanban-item-tags{display:flex;padding-top:.5rem;margin:-0.125rem}.kanban-item-tags li{padding:.125rem}.kanban-item-meta{display:flex;align-items:flex-end;justify-content:space-between;padding-top:.5rem}.kanban-item-meta-list{display:flex;align-items:center;flex-wrap:wrap;margin:0 -0.25rem}.kanban-item-meta-list:last-child{flex-wrap:nowrap}.kanban-item-meta-list:first-child{padding-right:1rem}.kanban-item-meta-list li{font-size:.8125rem;padding:0 .25rem;color:#8094ae}.kanban-item-meta-list li span{white-space:nowrap}.kanban-item-meta-list li .icon+span{margin-left:.25rem}.kanban-item:hover{cursor:move}.kanban-item:last-child{margin:0}.kanban-item.is-moving.gu-mirror{transform:rotate(3deg);height:auto !important}.gu-mirror{position:fixed !important;margin:0 !important;z-index:9999 !important}.gu-hide{display:none !important}.gu-unselectable{-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.gu-transit{opacity:.2 !important;transform:rotate(0deg) !important}.drag_handler{background:#fff;border-radius:50%;width:24px;height:24px;position:relative;top:-3px;float:left;margin-right:4px}.drag_handler:hover{cursor:move}.drag_handler_icon{position:relative;display:block;background:#000;width:24px;height:2px;top:12px;transition:.5s ease-in-out}.drag_handler_icon:before,.drag_handler_icon:after{background:#000;content:"";display:block;width:100%;height:100%;position:absolute;transition:.5s ease-in-out}.drag_handler_icon:before{top:6px}.drag_handler_icon:after{bottom:6px}.kanban-add-task{color:#0fac81;background:#fff;border:1px dashed #e5e9f2;padding-top:.675rem;padding-bottom:.675rem}.kanban-add-task:hover{color:#fff;background:#0fac81;border:1px solid #0fac81}.kanban-add-task:focus{outline:none;box-shadow:none}.dual-listbox{display:flex;flex-direction:column}.dual-listbox .dual-listbox__container{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap}.dual-listbox .dual-listbox__search{max-width:300px}.dual-listbox .dual-listbox__search--hidden{display:none}.dual-listbox .dual-listbox__available,.dual-listbox .dual-listbox__selected{border:1px solid #e5e9f2;height:300px;overflow-y:auto;padding:0;width:300px;margin-top:0;border-radius:0 0 4px 4px}.dual-listbox .dual-listbox__buttons{display:flex;flex-direction:column;margin:10px;padding:10px 10px 0}.dual-listbox .dual-listbox__button{margin-bottom:5px;justify-content:center;text-transform:capitalize}.dual-listbox .dual-listbox__title{font-size:1rem;font-weight:500;padding:.5rem 1rem;border-left:1px solid #e5e9f2;border-right:1px solid #e5e9f2;border-top:1px solid #e5e9f2;margin-top:1rem;-webkit-margin-before:1rem;border-radius:4px 4px 0 0}.dual-listbox .dual-listbox__item{display:block;padding:.5rem 1rem;cursor:pointer;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;border-bottom:1px solid #e5e9f2;transition:background-color .2s ease}@media(min-width: 576px)and (max-width: 991.98px){.dual-listbox .dual-listbox__container{flex-wrap:nowrap}.dual-listbox .dual-listbox__container>div:not(.dual-listbox__buttons){width:100%}.dual-listbox .dual-listbox__available,.dual-listbox .dual-listbox__selected{width:auto}.dual-listbox .dual-listbox__buttons{margin:10px auto}.dual-listbox__buttons{flex-shrink:0}}@media(max-width: 575.98px){.dual-listbox .dual-listbox__container>div:not(.dual-listbox__buttons){width:100%}.dual-listbox .dual-listbox__available,.dual-listbox .dual-listbox__selected{width:100%}.dual-listbox .dual-listbox__buttons{margin:10px auto 0}}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.mfp-container:before{content:"";display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-arrow{overflow:visible;cursor:pointer;background:rgba(0,0,0,0);border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}button.mfp-close{overflow:visible;cursor:pointer;border:0;-webkit-appearance:none;display:flex;align-items:center;justify-content:center;outline:none;padding:0;z-index:1046;box-shadow:0 3px 12px 1px rgba(43,55,72,.15);touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;transform:translate(50%, -50%);color:#fff;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace;background-color:#fff;border-radius:50%}.mfp-close:hover,.mfp-close:focus{opacity:1}.mfp-close:active{top:1px}.mfp-close:after{position:absolute;font-family:"Nioicon";content:"";color:#526484}.mfp-close-btn-in .mfp-close{color:#333}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px;white-space:nowrap}.mfp-arrow{position:absolute;opacity:.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1}.mfp-arrow:before,.mfp-arrow:after{content:"";display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset rgba(0,0,0,0)}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:calc(100% - 34px);max-width:900px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000;border-radius:8px}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;margin:0 auto;border-radius:8px}.mfp-figure{line-height:0}.mfp-figure:after{content:"";position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small,.mfp-figure .small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:calc(100% - 34px)}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px)and (orientation: landscape),screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small,.mfp-img-mobile .mfp-figure .small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.gu-mirror{position:fixed !important;margin:0 !important;z-index:9999 !important;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80);cursor:grabbing}.gu-hide{display:none !important}.gu-unselectable{-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.gu-transit{opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";filter:alpha(opacity=20)}.dragula-container>*:not(:last-child){margin-bottom:.75rem}.dragula-container>*{cursor:move;cursor:grab;touch-action:none}.dragula-container.has-handle>*{cursor:initial}.dragula-handle{display:flex}.dragula-handle .handle{position:relative;font-size:1.125rem;cursor:move;margin:0 .875rem}.dragula-handle .handle:after{position:absolute;top:0;right:0;bottom:0;font-family:"Nioicon";content:"";font-size:1rem}.google-map{height:400px;width:100%}body{min-width:320px}body.nav-shown{overflow:hidden}.nk-body{outline:none}.nk-app-root{outline:none}.nk-main{position:relative}.nk-wrap{display:flex;flex-direction:column;min-height:100vh}.nk-content{padding:20px 4px}.nk-content-fs{min-height:calc(100vh - (65px + 65px));display:flex;align-items:center}@media(min-width: 576px){.nk-content{padding:24px 22px}.nk-content-fluid{padding-left:22px;padding-right:22px}}@media(min-width: 992px){.nk-content-lg{padding-top:30px;padding-bottom:30px}.nk-content-fluid{padding-left:24px;padding-right:24px}}@media(min-width: 1200px){.nk-content{padding:14px 22px 24px}}@media(min-width: 1660px){.nk-content-lg{padding-top:45px;padding-bottom:45px}.nk-content-fluid{padding-left:44px;padding-right:44px}}.nk-content-body{flex-grow:1}.nk-wrap-nosidebar .nk-content{padding:0 !important;min-height:100vh;display:flex;flex-direction:column}.logo-link{position:relative;display:inline-block;align-items:center}.logo-dark{opacity:1}.tc-light .logo-dark,.is-dark .logo-dark,.is-theme .logo-dark{opacity:0}.logo-light{opacity:0}.tc-light .logo-light,.is-dark .logo-light,.is-theme .logo-light{opacity:1}.logo-img{max-height:36px}.logo-img-lg{max-height:60px}.logo-img-sm{max-height:28px}.logo-img-icon{max-height:33px}.logo-img:not(:first-child){position:absolute;left:0;top:50%;transform:translateY(-50%)}.nk-header{padding:0 6px;border-bottom:1px solid #e5e9f2;z-index:1010}.nk-header-fixed{position:fixed;top:0;left:0;right:0;background:#fff;min-width:320px}.nk-header-fixed+.nk-content{margin-top:65px;position:relative}.nk-header-wrap{position:relative;display:flex;align-items:center;margin:0 -0.25rem}.nk-header-wrap>*{padding:0 .25rem}.nk-header-right{align-items:center;justify-content:flex-end}.nk-header-center{justify-content:center}.nk-header-tools{margin-left:auto;padding-top:14px;padding-bottom:14px}.nk-header-brand{flex-shrink:0;padding-top:14px;padding-bottom:14px}.nk-header-search{display:none}.nk-header-search .form-control,.nk-header-search div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .nk-header-search input,.nk-header-search .dual-listbox .dual-listbox__search,.dual-listbox .nk-header-search .dual-listbox__search{background-color:rgba(0,0,0,0);border:none}.is-dark .nk-header-search .icon{color:#fff}.is-theme .nk-header-search .icon{color:#fff}.nk-header .dropdown-menu .lead-text{color:#364a63}.nk-header .dropdown-menu .sub-text,.nk-header .dropdown-menu .overline-title,.nk-header .dropdown-menu .overline-title-alt{color:#8094ae}.nk-quick-nav{display:flex;align-items:center;margin:0 -6px}.nk-quick-nav>li{padding:0 6px}.nk-quick-nav>li.user-dropdown>a{padding:0 2px}.nk-quick-nav-icon{display:inline-flex;position:relative;font-size:1.5rem;z-index:1;color:#526484;padding:.375rem}.is-dark .nk-quick-nav-icon{color:#9faec2}.is-theme .nk-quick-nav-icon{color:#abe2d3}.is-theme .nk-quick-nav-icon.nk-nav-toggle{color:#fff}.nk-quick-nav-icon:focus{box-shadow:none}.nk-quick-nav-icon:before{position:absolute;z-index:-1;height:20px;width:20px;top:50%;left:50%;transform:translate(-50%, -50%);transform-origin:50% 50%;content:"";background-color:#e5e9f2;border-radius:50%;opacity:0;transition:all .3s}.is-dark .nk-quick-nav-icon:before{background-color:#0b1219}.is-theme .nk-quick-nav-icon:before{background-color:#03231a}.show>.nk-quick-nav-icon:before{opacity:1;height:116%;width:116%}.nk-quick-nav-icon:hover:before,.nk-quick-nav-icon.active:before{opacity:1;height:116%;width:116%}@media(max-width: 359px){.nk-quick-nav{margin:0 -3px}.nk-quick-nav>li{padding:0 3px}.hide-mb-xs{display:none}}@media(max-width: 575px){.hide-mb-sm{display:none}}@media(min-width: 576px){.nk-header{padding-left:22px;padding-right:22px}.nk-header-search{display:flex;align-items:center;flex-grow:1}.nk-quick-nav{margin:0 -10px}.nk-quick-nav>li{padding:0 10px}}@media(min-width: 992px){.nk-header-fluid{padding-left:24px;padding-right:24px}}@media(min-width: 1200px){.nk-header{border-bottom:none;padding-top:.5rem}.nk-header-fixed{left:340px}}.nk-header-menu{position:fixed;top:0;left:0;transform:translateX(-100%);width:280px;height:100vh;max-height:100vh;z-index:999;background:#fff}.nk-header-menu-inner{max-height:100%;min-height:100%}.nk-header-menu.mobile-menu{padding-top:65px;padding-left:0;padding-right:0;transition:transform .4s ease}.nk-header-menu.nk-sidebar-active{transform:translateX(0)}.nk-header-mobile{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid #e5e9f2}.nk-header-mobile .logo-dark{opacity:1}.nk-header-mobile .logo-light{opacity:0}.nk-header-mobile .nk-nav-toggle.nk-quick-nav-icon{color:#526484}.nk-header-mobile .nk-nav-toggle.nk-quick-nav-icon:before{background-color:#e5e9f2}@media(min-width: 992px){.nk-header-menu{position:static;background:rgba(0,0,0,0);height:auto;max-height:auto;border-right:none;width:auto;padding:0;overflow:visible;transform:translateX(0) !important}.nk-header-menu .nk-header-mobile{display:none}}.nk-header-app-name{display:flex;align-items:center;flex-shrink:0}.nk-header-app-logo{flex-shrink:0;width:32px;height:32px;margin-right:.75rem}.nk-header-app-logo .icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:20px;color:#0fac81;background:rgba(15,172,129,.3)}.nk-header-app-info{line-height:1.3}.nk-header-app-info .sub-text{font-size:11px;margin-bottom:.125rem}.nk-header-app-info .lead-text{font-size:14px}.nk-header-app-switch{position:relative}.nk-header-app-switch .nk-header-app-name{padding:1.5rem 24px}.nk-header-app-switch>a{display:block;width:100%}.nk-header-app-switch>a:after{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:1rem;content:"";font-family:"Nioicon"}.mobile-menu .nk-header-app-switch{width:100%;border-bottom:1px solid #e5e9f2}.nk-header-app-switch .toggle-content{width:100%;top:0;transform:translateY(0);height:calc(100vh - 65px);overflow:auto;box-shadow:none;border-radius:0;background:#fff}.nk-header-app-head{display:flex;align-items:center;justify-content:space-between;padding:.75rem 24px}.nk-header-app-head .title{font-size:16px;font-weight:500}.nk-header-app-head .toggle{position:relative;height:24px;width:24px;display:inline-flex;align-items:center;justify-content:center}.nk-header-app-list li{border-bottom:1px solid #e5e9f2}.nk-header-app-list .nk-header-app-name{padding:1rem 24px}@media(max-height: 615px){.nk-header-app-switch .dropdown-menu{max-height:416px;overflow:auto}}@media(min-width: 768px){.nk-header-onlymobile{display:none}.nk-header-onlymobile+.nk-content{margin-top:0}}.quick-icon{display:inline-flex;height:24px;width:24px;border-radius:50%}.quick-icon img.icon{border-radius:50%}.nk-sidebar{position:fixed;top:0;display:flex;width:340px;min-height:100vh;max-height:100vh;box-shadow:1px 0px 6px 0px rgba(54,74,99,.08);z-index:1021;left:0;transform:translateX(-100%);transition:left 450ms ease,transform 450ms ease}.nk-sidebar-bar{width:81px;background:#f5f6fa;border-right:1px solid #e5e9f2}.nk-sidebar-bar.is-light{background:#fff;border-right-color:#ebeef2}.nk-sidebar-bar.is-dark{background:#101924;border-right-color:#203247}.nk-sidebar-bar.is-dark+.is-dark{background:#131e2b}.nk-sidebar-bar.is-theme{background:#064936;border-right-color:#0a7859}.nk-sidebar-bar.is-theme+.is-theme{background:#07523d}.nk-sidebar-bar .dropdown-menu .lead-text{color:#364a63}.nk-sidebar-bar .dropdown-menu .sub-text,.nk-sidebar-bar .dropdown-menu .overline-title,.nk-sidebar-bar .dropdown-menu .overline-title-alt{color:#8094ae}.nk-sidebar-main{flex-grow:1;width:259px;background:#f5f6fa;border-right:1px solid #e5e9f2}.nk-sidebar-main.is-light{background:#fff;border-right-color:#ebeef2}.nk-sidebar-main.is-dark{background:#101924;border-right-color:#203247}.nk-sidebar-main.is-theme{background:#064936;border-right-color:#0a7859}.nk-sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(16,25,36,.4);z-index:801;animation:overlay-fade-in .4s ease 1}.nk-sidebar-element{overflow:hidden;width:100%;max-height:100%}.nk-sidebar.nk-sidebar-active{transform:translateX(0)}.nk-sidebar-fixed{position:fixed;max-height:100vh}.nk-sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;min-width:100%;width:340px;height:65px;border-bottom:1px solid #e5e9f2}.is-dark .nk-sidebar-head{border-color:#203247}.is-theme .nk-sidebar-head{border-color:#0a7859}.nk-sidebar-brand{position:relative;flex-shrink:0}.nk-sidebar-logo{transition:opacity .3s ease}.nk-sidebar-logo .logo-img:not(:first-child){position:absolute;left:0;top:50%;transform:translateY(-50%)}.nk-sidebar-footer{margin-top:auto;padding:.75rem .1875rem .5rem}.nk-sidebar-body{position:relative}.nk-sidebar-body .simplebar-content{padding-bottom:.25rem !important;min-height:100%;display:flex;flex-direction:column}.nk-sidebar-body .simplebar-scroll-content{min-height:100%;width:100%}.nk-sidebar-content{display:flex;flex-direction:column;height:calc(100vh - (65px + 60px))}.nk-sidebar-content .nk-sidebar-menu{padding-top:1.5rem}.nk-sidebar-content .nk-sidebar-menu[data-simplebar]{height:100%}.nk-sidebar-content[data-simplebar]>div{width:100%}.nk-sidebar-profile-fixed{position:fixed;bottom:0;width:81px;display:flex;justify-content:center;padding:.25rem 0 1rem;z-index:9}.nk-sidebar-profile-dropdown.content-active{display:block;left:100%;bottom:0}.nk-sidebar-inner{padding:1.5rem 1.75rem 2rem;max-height:calc(100vh - 65px)}.nk-sidebar.mobile-menu{transition:transform .4s ease}.nk-sidebar .nk-menu:not(.apps-menu) .nk-menu-heading{padding-left:0;padding-right:0}.nk-sidebar .nk-menu:not(.apps-menu) .nk-menu-toggle:after{right:0}.nk-sidebar .nk-menu:not(.apps-menu)>li>a{padding-left:0;padding-right:0}@keyframes overlay-fade-in{0%{opacity:0}100%{opacity:1}}@media(max-width: 991.98px){.nk-sidebar-mobile{width:340px !important}}@media(max-width: 575.98px){.nk-sidebar-inner{padding:1.25rem 1.25rem 2.5rem}}@media(min-width: 1200px){.nk-sidebar-content .nk-sidebar-menu{padding-top:.25rem;padding-bottom:1.5rem}.nk-sidebar{transform:translateX(0)}.nk-sidebar-overlay{display:none}.has-sidebar .nk-wrap{padding-left:340px}}@media(max-width: 420px){.nk-sidebar-main{max-width:calc(100vw - 81px - 20px)}.nk-sidebar-profile-dropdown{max-width:calc(100vw - 81px - 10px);min-width:calc(100vw - 81px - 10px)}}.nk-apps-brand .logo-link{position:relative;padding:1.25rem 1.5rem 1.25rem}.nk-apps-brand .logo-img:not(:first-child){left:1.5rem}.nk-apps-brand.has-dropdown .logo-link:after{position:absolute;bottom:0;left:50%;transform:translateX(-50%);content:"";font-family:"Nioicon";color:#8094ae;font-size:1.25rem}.nk-apps-brand:hover .nk-apps-dropdown{opacity:1;transform:translateX(0);visibility:visible}.nk-apps-dropdown{position:absolute;top:0;left:0;border-radius:0 0 4px 0;transform:translateX(-25px);width:280px;background:#fff;box-shadow:0 .125rem .25rem rgba(43,55,72,.15);z-index:1109;opacity:0;visibility:hidden;transition:all .3s}.nk-apps-dropdown-list li:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-apps-dropdown-item{display:flex;align-items:center;padding:1.25rem 1.5rem}.nk-apps-dropdown-icon{flex-shrink:0;width:36px}.nk-apps-dropdown-icon+.nk-apps-dropdown-text{margin-left:1rem}.nk-sidebar-short{overflow:hidden;width:81px;box-shadow:1px 0px 6px 0px rgba(54,74,99,.08);flex-direction:column}.nk-sidebar-short.nk-sidebar-mobile .nk-sidebar-logo{opacity:1}.nk-sidebar-short.nk-sidebar-mobile .nk-sidebar-menu-middle{margin-top:0}.nk-sidebar-short .nk-sidebar-logo{opacity:0}.nk-sidebar-short .nk-sidebar-logo-small{display:none}.nk-sidebar-short .nk-sidebar-menu-middle{margin-top:auto}.nk-sidebar-short .nk-sidebar-footer{padding:1rem 0}.nk-sidebar-short .nk-menu-trigger{display:none}@media(min-width: 768px){.nk-sidebar-short{transform:none}.nk-sidebar-short.nk-sidebar-mobile{width:80px !important}.nk-sidebar-short+.nk-wrap{padding-left:81px}.nk-sidebar-short .nk-sidebar-head{width:80px;border-bottom:none}.nk-sidebar-short .nk-sidebar-logo{display:none}.nk-sidebar-short .nk-sidebar-logo-small{display:block}}.nk-menu li a{vertical-align:middle;display:flex;position:relative;align-items:center;transition:color .3s,background-color .3s}.nk-menu-item{padding:2px 0}.nk-menu-sub .nk-menu-item{padding:1px 0}.nk-menu-item.has-sub{position:relative}.nk-menu>.nk-menu-item.menu-without-icon>.nk-menu-sub .nk-menu-link{padding-left:0}.nk-menu-link{padding:.375rem 40px .375rem 24px;color:#6e82a5;font-family:Nunito,sans-serif;font-weight:700;font-size:14px;letter-spacing:.01em;text-transform:none;line-height:1.25rem}.nk-menu-link:hover,.active>.nk-menu-link{color:#11c393}.nk-menu-link:hover .count,.active>.nk-menu-link .count{color:#11c393}.nk-menu-sub .nk-menu-link{padding:.375rem 28px .375rem 28px;font-family:Nunito,sans-serif;font-weight:400;font-size:13px;letter-spacing:normal;text-transform:none;line-height:1.25rem;color:#6e82a5}.no-icon .nk-menu-sub .nk-menu-link{padding:.375rem 28px .375rem 18.6666666667px}.nk-menu-link.is-disable{cursor:default}.nk-menu-link.is-disable:hover,.active>.nk-menu-link.is-disable{color:#6e82a5}.nk-menu-link.is-disable:hover .count,.active>.nk-menu-link.is-disable .count{color:#6e82a5}.is-light .nk-menu-link{color:#526484}.is-theme .nk-menu-link{color:#8dd8c3}.is-light .nk-menu-link:hover,.is-light .active>.nk-menu-link{color:#11c393}.is-theme .nk-menu-link:hover,.is-theme .active>.nk-menu-link{color:#fff}.nk-menu-link span.small{color:#8094ae;margin-left:.5rem}.nk-menu-icon{font-weight:normal;letter-spacing:normal;width:28px;line-height:1;flex-grow:0;color:#8094ae}.is-theme .nk-menu-icon{color:#8dd8c3}.nk-menu-icon svg,.nk-menu-icon img{width:28px}.nk-menu-icon .icon{font-size:18px;letter-spacing:normal;vertical-align:middle;color:currentColor;transition:color .4s,background-color .4s}.nk-menu-link:hover .nk-menu-icon,.nk-menu-item.active>.nk-menu-link .nk-menu-icon,.nk-menu-item.current-menu>.nk-menu-link .nk-menu-icon{color:#11c393}.is-theme .nk-menu-link:hover .nk-menu-icon,.is-theme .nk-menu-item.active>.nk-menu-link .nk-menu-icon,.is-theme .nk-menu-item.current-menu>.nk-menu-link .nk-menu-icon{color:#fff}.nk-menu-link.is-disable:hover .nk-menu-icon{color:#8094ae}.is-theme .nk-menu-link.is-disable:hover .nk-menu-icon{color:#abe2d3}.nk-menu-text{flex-grow:1;display:inline-block}.nk-menu-badge{border-radius:3px;padding:0 .4rem;font-size:11px;color:#3fbd9a;background:#e2f5f0;position:absolute;top:50%;right:24px;transform:translateY(-50%)}.is-dark .nk-menu-badge{color:#6fcdb3;background:#203247}.is-theme .nk-menu-badge{color:#abe2d3;background:#0b8160}.nk-menu-main .nk-menu-sub .nk-menu-badge{color:#3fbd9a;background:#e2f5f0}.nk-menu-main .nk-menu-badge{position:static;transform:translateY(0);margin-left:.5rem}.nk-menu-heading{padding:.25rem 24px .5rem;color:#8094ae}.is-theme .nk-menu-heading{color:#72ceb5}.nk-menu-item+.nk-menu-heading{padding-top:2.5rem}.nk-menu-heading .overline-title{color:inherit}.nk-menu-heading span{font-size:13px;font-weight:400}.nk-menu-hr{margin:1.25rem 0;border-bottom:1px solid #dbdfea}.is-dark .nk-menu-hr{border-color:rgba(255,255,255,.12)}.is-theme .nk-menu-hr{border-color:rgba(255,255,255,.12)}.nk-menu-hr+.nk-menu-heading{padding-top:1rem}.nk-menu-sub{padding-bottom:.25rem}.nk-menu-toggle+.nk-menu-sub{display:none}.active>.nk-menu-sub{display:block}.nk-menu-sub .nk-menu-link:hover{color:#0fac81}.is-theme .nk-menu-sub .nk-menu-link:hover{color:#fff}.nk-menu-sub .active>.nk-menu-link{color:#0fac81}.is-theme .nk-menu-sub .active>.nk-menu-link{color:#fff}.nk-menu-sub .nk-menu-icon{width:24px;margin-top:-1px}.nk-menu-sub .nk-menu-icon .icon{margin-top:-1px;font-size:1.2em}.nk-menu-sub .nk-menu-sub{margin-left:1.25rem}.nk-menu-toggle{position:relative}.nk-menu-toggle:after{position:absolute;font-family:"Nioicon";top:50%;right:1.25rem;content:"";transform:translateY(-50%);font-size:1rem;color:#8094ae;transition:transform .3s,color .1s}.is-dark .nk-menu-toggle:after,.is-theme .nk-menu-toggle:after{color:rgba(255,255,255,.4)}.has-sub.active>.nk-menu-toggle:after{transform:translateY(-50%) rotate(90deg)}.nk-menu .count{display:inline-block;font-size:.85em;margin-left:.25rem;color:#8094ae;line-height:1}.nk-menu-icon-colored .nk-menu-icon{color:#0fac81}.nk-menu-tooltip{position:absolute;top:0;right:0;bottom:0;left:0}.nk-menu-content{display:none}.nk-menu-content.menu-active{display:block}.nk-menu-content .title{margin:.325rem 0 1.5rem}.nk-menu+.nk-menu-md{padding-top:5rem}.nk-menu-md .nk-menu-heading{color:#526484}.nk-menu-md .nk-menu-link{padding-top:.325rem;padding-bottom:.325rem}.nk-menu-md .nk-menu-sub .nk-menu-link{padding:.375rem 32px .375rem 1.75rem}.nk-menu-md .nk-menu-sub .nk-menu-sub{border-left:1px solid #e5e9f2;margin-left:1.75rem}.nk-menu-md .nk-menu-sub .nk-menu-sub .nk-menu-link{padding-left:1rem}.nk-menu-md .nk-menu-icon{width:1.75rem;margin-top:-2px}.nk-menu-md .nk-menu-icon .icon{font-size:1.25rem}.nk-menu-md .nk-menu-text{font-size:14px;line-height:1.25rem}.nk-menu-inline{display:flex}.nk-menu-inline .nk-menu-link{padding-left:0;padding-right:0}.nk-menu-footer{display:flex}.nk-menu-footer .nk-menu-link{padding-left:0;padding-right:0;padding-top:.25rem;padding-bottom:.25rem;color:#8094ae;font-family:Roboto,sans-serif;font-weight:500}.nk-menu-footer .nk-menu-link:hover{color:#11c393}.is-theme .nk-menu-footer .nk-menu-link{color:#abe2d3}.nk-menu-footer .nk-menu-icon{width:1.375rem;color:#0fac81}.nk-menu-footer .nk-menu-icon .icon{font-size:1rem}.nk-menu-footer .nk-menu-text{font-size:12px;line-height:1.125rem}.nk-menu-main.nk-menu{padding-top:.75rem}.nk-menu-main .nk-menu-link{color:#526484;padding-left:24px}.nk-menu-main .nk-menu-sub{padding:0;margin:0;transition:none}.nk-menu-main .nk-menu-sub .nk-menu-link{color:#526484}.nk-menu-main .nk-menu-sub .nk-menu-sub{border-left:1px solid #dbdfea;margin:.25rem 0 .25rem 24px;padding-bottom:0}.nk-menu-main .nk-menu-sub .nk-menu-sub .nk-menu-link{padding-left:.875rem}.nk-menu-main .nk-menu-link:hover,.nk-menu-main .nk-menu-link:focus,.nk-menu-main .nk-menu-item.active>.nk-menu-link,.nk-menu-main .nk-menu-item.current-menu>.nk-menu-link,.nk-menu-main .nk-menu-item:hover>.nk-menu-link{color:#11c393}.nk-menu-main>li>.nk-menu-link{font-family:Roboto,sans-serif;font-weight:500;letter-spacing:-0.01rem}@media(max-width: 1199.98px){.nk-menu-main.nk-menu{max-height:calc(100vh - 65px);overflow:auto}}@media(min-width: 992px){.nk-menu-main.nk-menu{padding:0 .5rem 0 .5rem}.nk-menu-main>li{padding:0;display:inline-block}.nk-menu-main>li.nk-menu-item{padding:0 .75rem}.nk-menu-main>li.nk-menu-item>.nk-menu-link{padding:1.25rem 0;font-size:15px}.nk-menu-main>li>.nk-menu-link:before{position:absolute;content:"";bottom:0;left:0;right:0;height:3px;background:#11c393;border-radius:3px 3px 0 0;opacity:0}.nk-menu-main>li.nk-menu-item.active>.nk-menu-link:before,.nk-menu-main>li.nk-menu-item.current-menu>.nk-menu-link:before{opacity:1}.nk-menu-main>li>.nk-menu-sub{border-top-left-radius:0;border-top-right-radius:0}.nk-menu-main .nk-menu-link{padding:.5rem 1.25rem;font-size:13px}.nk-menu-main .nk-menu-icon{display:none}.nk-menu-main .nk-menu-text{line-height:1.5rem}.nk-menu-main .nk-menu-item .nk-menu-toggle:after{line-height:1;position:static;transform:translateY(0);content:"";vertical-align:middle;color:rgba(128,148,174,.7);margin-left:.5rem;margin-right:-2px;margin-top:-1px;transition:color .1s}.nk-menu-main .nk-menu-item:hover>.nk-menu-sub{opacity:1;visibility:visible;margin-top:0}.nk-menu-main .nk-menu-sub{position:absolute;left:0;top:100%;width:200px;background:#fff;border:1px solid #e5e9f2;box-shadow:0 .125rem .25rem rgba(43,55,72,.15);border-radius:4px;padding:.5rem 0;opacity:0;visibility:hidden;margin-top:6px;transition:opacity .4s,margin .2s;display:block !important}.nk-menu-main .nk-menu-sub .nk-menu-link{padding-top:.5rem;padding-bottom:.5rem}.nk-menu-main .nk-menu-sub .nk-menu-sub{top:-9px;padding:.5rem 0;border:1px solid #e5e9f2;margin:0;margin-top:6px;margin-left:-0.75rem;left:100%}.nk-menu-main .nk-menu-sub .nk-menu-sub .nk-menu-link{padding-left:1.5rem}.nk-menu-main .nk-menu-sub .nk-menu-item:hover>a{background:#f5f6fa}.nk-menu-main .nk-menu-sub .nk-menu-toggle:after{content:""}.is-dark .nk-menu-main>li>.nk-menu-link:before,.is-theme .nk-menu-main>li>.nk-menu-link:before{border-radius:0;bottom:auto;top:0}.is-dark .nk-menu-main>li>.nk-menu-link{color:#9faec2}.is-dark .nk-menu-main>li>.nk-menu-link.nk-menu-toggle:after{color:rgba(128,148,174,.7)}.is-dark .nk-menu-main>li:hover>.nk-menu-link,.is-dark .nk-menu-main>li.active>.nk-menu-link,.is-dark .nk-menu-main>li.current-menu>.nk-menu-link,.is-dark .nk-menu-main>li>.nk-menu-link:hover{color:#fff}.is-theme .nk-menu-main>li>.nk-menu-link{color:#abe2d3}.is-theme .nk-menu-main>li>.nk-menu-link.nk-menu-toggle:after{color:rgba(171,226,211,.7)}.is-theme .nk-menu-main>li:hover>.nk-menu-link,.is-theme .nk-menu-main>li.active>.nk-menu-link,.is-theme .nk-menu-main>li.current-menu>.nk-menu-link,.is-theme .nk-menu-main>li>.nk-menu-link:hover{color:#fff}}@media(min-width: 1200px){.nk-menu-main.nk-menu{padding:0 1.5rem 0 2rem}.nk-menu-main>li.nk-menu-item{padding:0 1rem}}.apps-menu .nk-menu-item{padding:.25rem 1.125rem}.apps-menu .nk-menu-link{padding:.625rem;border-radius:4px;text-align:center}.apps-menu .nk-menu-icon{width:100%}.apps-menu .nk-menu-icon .icon{font-size:24px}.apps-menu.nk-menu-md .nk-menu-item{padding:.125rem 1.125rem}.apps-menu.nk-menu-md .nk-menu-link{padding:.625rem;text-align:center}.apps-menu.nk-menu-md .nk-menu-icon{width:100%}.apps-menu.nk-menu-md .nk-menu-icon .icon{font-size:18px}.apps-menu .active>.nk-menu-link{background-color:#fff}.is-light .apps-menu .active>.nk-menu-link{background-color:#e2f5f0}.is-dark .apps-menu .active>.nk-menu-link{background-color:#0b1219}.is-theme .apps-menu .active>.nk-menu-link{background-color:#03231a}@media(min-width: 992px){.apps-menu>li.nk-menu-item.active>.nk-menu-link:before{opacity:1}}.nk-sidebar-mobile .nk-sidebar-footer .short-menu{display:flex;align-items:center;flex-wrap:wrap;padding:0 1rem}.short-menu .nk-menu-item{padding:.125rem .875rem}.nk-sidebar-mobile .nk-sidebar-footer .short-menu .nk-menu-item{width:50%}.nk-sidebar-footer .short-menu .nk-menu-item{padding:.125rem 0}.short-menu .nk-menu-item.active .nk-menu-link{background-color:#fff}.is-light .short-menu .nk-menu-item.active .nk-menu-link{background-color:#e2f5f0}.is-dark .short-menu .nk-menu-item.active .nk-menu-link{background-color:#0b1219}.is-theme .short-menu .nk-menu-item.active .nk-menu-link{background-color:#03231a}.short-menu .nk-menu-link{border-radius:4px;padding:.625rem}.short-menu .nk-menu-link:hover,.short-menu .nk-menu-link.active{background-color:#fff}.is-light .short-menu .nk-menu-link:hover,.is-light .short-menu .nk-menu-link.active{background-color:#e2f5f0}.is-dark .short-menu .nk-menu-link:hover,.is-dark .short-menu .nk-menu-link.active{background-color:#0b1219}.is-theme .short-menu .nk-menu-link:hover,.is-theme .short-menu .nk-menu-link.active{background-color:#03231a}.nk-sidebar-footer .short-menu .nk-menu-link{color:#0fac81;font-size:13px}.nk-sidebar-footer .short-menu .nk-menu-icon{width:28px;color:#0fac81}.nk-sidebar-footer .short-menu .nk-menu-icon .icon{font-size:1.125rem}.short-menu .nk-menu-text{opacity:0}.nk-sidebar-mobile .short-menu .nk-menu-text{opacity:1}.short-menu .nk-menu-tooltip{display:none}@media(min-width: 768px){.nk-sidebar-footer .short-menu{padding:0}.short-menu .nk-menu-item{padding:.125rem 1.125rem}.nk-sidebar-footer .short-menu .nk-menu-item{padding:.125rem 1.3125rem}.short-menu .nk-menu-link{padding:.625rem}.short-menu .nk-menu-icon{text-align:center;width:auto !important}.short-menu .nk-menu-text{display:none}.short-menu .nk-menu-tooltip{display:block}}.nk-footer{margin-top:auto;background:#fff;border-top:1px solid #e5e9f2;padding:20px 6px}.nk-footer.is-dark:not([class*=bg-]){background:#074d3a}.nk-footer-wrap{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.nk-footer-copyright{color:#8094ae}.nk-footer-copyright a{color:inherit}.nk-footer-copyright a:hover{color:#0fac81}@media(min-width: 576px){.nk-footer{padding:20px 22px}}@media(min-width: 992px){.nk-footer-fluid{padding-left:24px;padding-right:24px}}@media(min-width: 1660px){.nk-footer-fluid{padding-left:44px;padding-right:44px}}.nk-split{position:relative;display:flex}.nk-split-page{min-height:100vh}.nk-split-content{position:relative;flex-shrink:0;width:100%;min-height:100%}@media(min-width: 768px){.nk-split-content-md{width:642px}}.nk-split-stretch{flex-grow:1;flex-shrink:1}@media(max-width: 991.98px){.nk-split-stretch.toggle-break-lg{width:460px}}@media(max-width: 575.98px){.nk-split-sm{flex-wrap:wrap}}@media(max-width: 767.98px){.nk-split-md{flex-wrap:wrap}}@media(max-width: 991.98px){.nk-split-lg{flex-wrap:wrap}}@media(max-width: 1199.98px){.nk-split-xl{flex-wrap:wrap}}@media(max-width: 1539.98px){.nk-split-xxl{flex-wrap:wrap}}@media(min-width: 992px){.npc-apps .nk-header,.npc-apps .nk-footer,.npc-apps .nk-content{padding-left:14px;padding-right:14px}}canvas{width:100%;max-width:100%}a:hover{text-decoration:none}p:last-child{margin-bottom:0}.del{text-decoration:line-through}span[data-toggle=tooltip]:focus{outline:none}li{list-style:none}.g-0:not(.row){margin:0}.g-0:not(.row)>li,.g-0:not(.row)>div{padding:0}.gx-0:not(.row){margin-left:0;margin-right:0}.gx-0:not(.row)>li,.gx-0:not(.row)>div{padding-left:0;padding-right:0}.gy-0:not(.row){margin-top:0;margin-bottom:0}.gy-0:not(.row)>li,.gy-0:not(.row)>div{padding-top:0;padding-bottom:0}.g-1:not(.row){margin:-0.1875rem}.g-1:not(.row)>li,.g-1:not(.row)>div{padding:.1875rem}.gx-1:not(.row){margin-left:-0.1875rem;margin-right:-0.1875rem}.gx-1:not(.row)>li,.gx-1:not(.row)>div{padding-left:.1875rem;padding-right:.1875rem}.gy-1:not(.row){margin-top:-0.1875rem;margin-bottom:-0.1875rem}.gy-1:not(.row)>li,.gy-1:not(.row)>div{padding-top:.1875rem;padding-bottom:.1875rem}.g-2:not(.row){margin:-0.375rem}.g-2:not(.row)>li,.g-2:not(.row)>div{padding:.375rem}.gx-2:not(.row){margin-left:-0.375rem;margin-right:-0.375rem}.gx-2:not(.row)>li,.gx-2:not(.row)>div{padding-left:.375rem;padding-right:.375rem}.gy-2:not(.row){margin-top:-0.375rem;margin-bottom:-0.375rem}.gy-2:not(.row)>li,.gy-2:not(.row)>div{padding-top:.375rem;padding-bottom:.375rem}.g-3:not(.row){margin:-0.5rem}.g-3:not(.row)>li,.g-3:not(.row)>div{padding:.5rem}.gx-3:not(.row){margin-left:-0.5rem;margin-right:-0.5rem}.gx-3:not(.row)>li,.gx-3:not(.row)>div{padding-left:.5rem;padding-right:.5rem}.gy-3:not(.row){margin-top:-0.5rem;margin-bottom:-0.5rem}.gy-3:not(.row)>li,.gy-3:not(.row)>div{padding-top:.5rem;padding-bottom:.5rem}.g-4:not(.row){margin:-0.75rem}.g-4:not(.row)>li,.g-4:not(.row)>div{padding:.75rem}.gx-4:not(.row){margin-left:-0.75rem;margin-right:-0.75rem}.gx-4:not(.row)>li,.gx-4:not(.row)>div{padding-left:.75rem;padding-right:.75rem}.gy-4:not(.row){margin-top:-0.75rem;margin-bottom:-0.75rem}.gy-4:not(.row)>li,.gy-4:not(.row)>div{padding-top:.75rem;padding-bottom:.75rem}.g-5:not(.row){margin:-1.375rem}.g-5:not(.row)>li,.g-5:not(.row)>div{padding:1.375rem}.gx-5:not(.row){margin-left:-1.375rem;margin-right:-1.375rem}.gx-5:not(.row)>li,.gx-5:not(.row)>div{padding-left:1.375rem;padding-right:1.375rem}.gy-5:not(.row){margin-top:-1.375rem;margin-bottom:-1.375rem}.gy-5:not(.row)>li,.gy-5:not(.row)>div{padding-top:1.375rem;padding-bottom:1.375rem}.g-gs:not(.row){margin:-14px}.g-gs:not(.row)>li,.g-gs:not(.row)>div{padding:14px}.gx-gs:not(.row){margin-left:-14px;margin-right:-14px}.gx-gs:not(.row)>li,.gx-gs:not(.row)>div{padding-left:14px;padding-right:14px}.gy-gs:not(.row){margin-top:-14px;margin-bottom:-14px}.gy-gs:not(.row)>li,.gy-gs:not(.row)>div{padding-top:14px;padding-bottom:14px}.gap{width:100%;display:block;height:28px}.gap-0{height:0}.gap-1{height:.375rem}.gap-2{height:.75rem}.gap-3{height:1rem}.gap-4{height:1.5rem}.gap-5{height:2.75rem}.gap-gs{height:28px}.gap-sm{height:.75rem}.gap-md{height:1.25rem}.gap-lg{height:2rem}.gap-xl{height:2.5rem}.gap-10px{height:10px}.gap-20px{height:20px}.gap-30px{height:30px}.gap-40px{height:40px}.gap-50px{height:50px}.gap-60px{height:60px}.gap-70px{height:70px}.gap-80px{height:80px}.gap-90px{height:90px}.gap-100px{height:100px}.li-col2x>li{width:50%;float:left}.li-col3x>li{width:33.3333333333%;float:left}.li-col4x>li{width:25%;float:left}.alert-cta{display:flex;justify-content:space-between;align-items:center}.alert-actions{display:inline-flex;align-items:center}.alert-actions a+a{margin-left:1rem}.accordion{background:#fff}.accordion-heading{padding-bottom:1.5rem}.accordion-body{border-radius:4px;padding:0}.accordion-item{border-bottom:0 !important}.accordion-item:last-of-type{border-bottom:1px solid #dbdfea !important}.accordion-item:not(:last-child) .accordion-head{border-bottom:1px solid #dbdfea}.accordion-item:not(:last-child) .accordion-inner{border-bottom:1px solid #dbdfea}.accordion-item:last-child .accordion-inner{border-top:1px solid #dbdfea}.accordion-head{padding:1rem 2.25rem 1rem 1.25rem;display:block;position:relative}.accordion-head .title{margin-bottom:0;font-size:1rem;color:#364a63;line-height:1.3}.accordion-head.collapsed .title{color:#526484}.accordion-inner{padding:1rem 1.25rem 1.25rem}.accordion-icon{position:absolute;right:1rem;top:50%;font-size:1rem;color:#364a63;transform:translateY(-50%);transition:rotate .4s;width:20px;height:20px;text-align:center;line-height:20px}.accordion-icon:before{content:"";font-family:"Nioicon";transition:.4s}.accordion-head.collapsed .accordion-icon:before{content:""}@media(min-width: 768px){.accordion-head{padding:1rem 1.5rem}.accordion-inner{padding:1rem 1.5rem 1.25rem}.accordion-icon{right:1.5rem}}.accordion-s2 .accordion-item,.accordion-s3 .accordion-item{border:0 !important}.accordion-s2{border:none}.accordion-s2 .accordion-icon{right:0}.accordion-s2 .accordion-icon:before{content:""}.accordion-s2 .accordion-head{padding:.5rem 2.25rem .5rem 0;border:none !important}.accordion-s2 .accordion-head .title{font-size:1.1rem;color:#0fac81}.accordion-s2 .accordion-head.collapsed .title{color:#526484}.accordion-s2 .accordion-head.collapsed .accordion-icon:before{content:""}.accordion-s2 .accordion-inner{padding:.5rem 0 .625rem;border:none !important}@media(min-width: 768px){.accordion-s2 .accordion-head{padding:.5rem 2.25rem .5rem 0}.accordion-s2 .accordion-inner{padding:.5rem 0 .625rem}}.accordion-s3{border:none}.accordion-s3 .accordion-icon{left:0;right:auto}.accordion-s3 .accordion-icon:before{content:""}.accordion-s3 .accordion-head{padding:.5rem 0 .5rem 2.25rem;border:none !important}.accordion-s3 .accordion-head .title{font-size:1.1rem;color:#0fac81}.accordion-s3 .accordion-head.collapsed .title{color:#526484}.accordion-s3 .accordion-head.collapsed .accordion-icon:before{content:""}.accordion-s3 .accordion-inner{padding:.5rem 0 .625rem;border:none !important}@media(min-width: 768px){.accordion-s3 .accordion-head{padding:.5rem 0 .5rem 2.25rem}.accordion-s3 .accordion-inner{padding:.5rem 2.25rem .625rem}}.dot{position:relative;display:inline-block;border-radius:50%;height:8px;width:8px}.dot-label:after{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:50%;background:#fff;content:"";transform:scale(0.65)}.dot.sq{border-radius:3px}.dot.sq:after{border-radius:3px}.dot-xs{height:4px;width:4px}.dot-sm{height:6px;width:6px}.dot-md{height:8px;width:8px}.dot-rg{height:10px;width:10px}.dot-lg{height:12px;width:12px}.dot-xl{height:16px;width:16px}.dot-primary{background:#0fac81}.dot-secondary{background:#364a63}.dot-success{background:#1ee0ac}.dot-info{background:#09c2de}.dot-warning{background:#f4bd0e}.dot-danger{background:#e85347}.dot-light{background:#e5e9f2}.dot-dark{background:#1f2b3a}.dot-gray{background:#8091a7}.dot-lighter{background:#f5f6fa}.list:not(:last-child){margin-bottom:1rem}.list li{position:relative;padding-left:1.5rem;line-height:1.5rem}.list li:not(:last-child){padding-bottom:.5rem}.list li:before{position:absolute;left:0;font-size:14px;line-height:1.5rem;font-family:"Nioicon";content:""}.list li span{color:#8094ae}.list li ul{margin-top:.5rem}.list-checked li:before{color:#0fac81;content:""}.list-checked-circle li:before{color:#0fac81;content:""}.list-cross li:before{color:rgba(232,83,71,.8);content:""}.list-status{list-style:none;line-height:1.3}.list-status li{display:inline-flex;align-items:center;padding-right:1rem;vertical-align:middle}.list-status .icon{margin-right:.375rem;line-height:1.3}.list-lg li{padding-left:2rem}.list-lg li:not(:last-child){padding-bottom:.75rem}.list-lg li:before{font-size:1.35rem}.list-sm li{padding-left:1.2rem}.list-sm li:not(:last-child){padding-bottom:.35rem}.list-sm li:before{font-size:12px}.list-step li{color:#8094ae;font-weight:500}.list-step li:before{content:""}.list-step li.list-step-current{color:#364a63}.list-step li.list-step-current:before{content:"";color:#0fac81}.list-step li.list-step-done{color:#526484}.list-step li.list-step-done:before{content:"";color:#1ee0ac}.list-plain a{color:#526484;display:block;line-height:1.3;padding:.5rem 0}.list-plain a:hover{color:#0fac81}.list-category a{font-weight:500}.list-download li>a{display:inline-block;padding:.25rem}.list-download li>a>.icon{margin:0 .25rem;font-size:1.25rem}.list-primary li:before{color:#0fac81}.list-secondary li:before{color:#364a63}.list-success li:before{color:#1ee0ac}.list-info li:before{color:#09c2de}.list-warning li:before{color:#f4bd0e}.list-danger li:before{color:#e85347}.list-light li:before{color:#e5e9f2}.list-dark li:before{color:#1f2b3a}.list-gray li:before{color:#8091a7}.list-lighter li:before{color:#f5f6fa}.link-bdr-t,.link-list-plain li+li,.link-list-opt li+li,.link-list+.link-list,.link-tidy li+li,.link-check+.link-check{border-top:1px solid #e5e9f2}.link-bdr-b{border-bottom:1px solid #e5e9f2}.link-pd-sm,.link-list-plain.sm a,.link-tidy.sm li{padding:6px 1rem}.link-act-check:after,.link-list-opt li.active>a:after,.link-list-opt a.active:after,.link-check li.active>a:after,.link-check li a.active:after{content:"";position:absolute;top:50%;transform:translateY(-50%);right:1rem;font-family:"Nioicon"}.link-check{padding:.5rem 0}.link-check .divider{margin:.5rem 0}.link-check li{display:block}.link-check li>span,.link-check li a{display:block;line-height:1.25rem;padding:.35rem 1rem}.link-check li>span{text-transform:uppercase;color:#364a63;font-weight:700;font-size:12px;letter-spacing:1px}.link-check li a{display:flex;align-items:center;color:#526484;font-size:13px;position:relative}.link-check li a:hover{color:#0fac81;background:#f5f6fa}.link-check li .icon{width:1.75rem;font-size:1.125rem}.link-tidy.no-bdr{padding:.5rem 0}.link-tidy.no-bdr li:not(.divider){border-top-width:0}.link-tidy .divider{margin:.5rem 0}.link-tidy li{position:relative;padding:.625rem 1.1rem;line-height:1.3rem}.link-list{padding:.75rem 0}.link-list .divider{margin:.5rem 0}.link-list a{display:flex;align-items:center;color:#526484;font-size:13px;line-height:1.4rem;font-weight:500;padding:.575rem 0;position:relative}.link-list a:hover{color:#0fac81}.link-list a .icon{font-size:1.125rem;width:1.5rem;line-height:1}.link-list-opt.no-bdr{padding:.5rem 0}.link-list-opt.no-bdr li:not(.divider){border-top-width:0}.link-list-opt .divider{margin:.5rem 0}.link-list-opt a{display:flex;align-items:center;padding:.625rem 1.25rem;font-size:12px;font-weight:500;color:#526484;transition:all .4s;line-height:1.3rem;position:relative}.link-list-opt a:hover{color:#0fac81;background:#f5f6fa}.link-list-opt a .icon{font-size:1.125rem;width:1.75rem;opacity:.8}.link-list-opt li.disabled>a,.link-list-opt a.disabled{pointer-events:none;color:#8094ae;opacity:.7}.link-list-opt .opt-head{padding:.25rem 1.25rem;color:#8094ae}.link-list-opt.ui-v2 a{font-weight:400}.link-list-opt.no-bdr+.link-check{margin-top:-0.75rem}.link-list-opt.ui-colored li.active>a,.link-list-opt.ui-colored a.active{color:#0fac81}.link-list-menu{padding:.75rem 0}.link-list-menu .divider{margin:.5rem 0}.link-list-menu a{position:relative;display:flex;align-items:center;padding:.75rem 1.25rem;font-weight:500;color:#526484;transition:all .4s;line-height:1.3rem}.link-list-menu a:after{position:absolute;font-size:1rem;font-family:"Nioicon";content:"";right:1.25rem;color:#8094ae;transition:.3s ease}.link-list-menu a .icon{font-size:1.125rem;width:1.75rem;opacity:.8;color:#8094ae;margin-top:-2px}.link-list-menu li.active>a,.link-list-menu a.active,.link-list-menu a:hover,.link-list-menu li.active>a .icon,.link-list-menu a.active .icon,.link-list-menu a:hover .icon,.link-list-menu li.active>a:after,.link-list-menu a.active:after,.link-list-menu a:hover:after{color:#0fac81}.link-list-menu.nav{display:block}@media(min-width: 576px){.link-list-menu a{padding:1rem 1.5rem}}.link-list-plain.no-bdr{padding:.5rem 0}.link-list-plain.no-bdr li{border-top-width:0}.link-list-plain .divider{margin:.5rem 0}.link-list-plain a{display:flex;align-items:center;padding:.5rem 1.25rem;color:#526484;transition:all .4s;line-height:1.4rem;position:relative}.link-list-plain a:hover{color:#0fac81;background:#f5f6fa}.link-list-plain a .icon{font-size:1.125rem;width:1.75rem;opacity:.8;color:#0fac81}.link-list-plain li.active>a,.link-list-plain a.active{color:#0fac81;background:#f5f6fa}.link-list-plain.text-center a{justify-content:center;padding-left:.25rem;padding-right:.25rem}.link-list-plain.li-col2x>li{border-right:1px solid #e5e9f2;border-bottom:1px solid #e5e9f2;border-top:0}.link-list-plain.li-col2x>li:nth-child(2n){border-right:none}.link-list-plain.li-col3x>li{border-right:1px solid #e5e9f2;border-bottom:1px solid #e5e9f2;border-top:0}.link-list-plain.li-col3x>li:nth-child(3n){border-right:none}.link-list-plain.li-col4x>li{border-right:1px solid #e5e9f2;border-bottom:1px solid #e5e9f2;border-top:0}.link-list-plain.li-col4x>li:nth-child(4n){border-right:none}.link-list-template a{font-weight:400}.passcode-icon{display:none}.passcode-icon.icon-show{display:block}.is-shown .passcode-icon.icon-show{display:none}.is-hidden .passcode-icon.icon-show{display:block}.is-shown .passcode-icon.icon-hide{display:block}.is-hidden .passcode-icon.icon-hide{display:none}.form-dropdown{position:absolute;right:0;top:0;bottom:0;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;color:#8094ae}.form-dropdown>div>span{margin:0 .5rem}.form-dropdown .dropdown>a{display:inline-flex}.form-clip,.form-text-hint{position:absolute;right:2px;top:2px;height:calc(2.125rem - 2px);display:flex;align-items:center;color:#0fac81;padding-left:1rem;padding-right:.75rem;background:#fff;border-radius:4px}.form-clip.sm,.form-text-hint.sm{height:calc(1.75rem + 2px)}.form-clip.lg,.form-text-hint.lg{height:calc(2.625rem + 2px)}.form-clip.xl,.form-text-hint.xl{height:calc(3.25rem + 2px)}.form-clip .icon+span,.form-clip span+.icon,.form-text-hint .icon+span,.form-text-hint span+.icon{margin-left:.25rem}.nk-upload-input{position:relative;z-index:2;width:100%;height:calc(2.125rem + 2px);margin:0;opacity:0}.nk-upload-label{position:relative;display:flex;flex-direction:column;justify-content:center;padding:1.5rem;width:100%;min-height:150px;border-radius:4px;border:1px dashed #e5e9f2;padding-bottom:0}.nk-upload-init{display:block;text-align:center}.nk-upload-files{padding-top:2rem;display:flex;justify-content:center;margin:-0.5rem;padding-bottom:2rem}.nk-upload-files li{position:relative;display:flex;flex-wrap:wrap;align-items:center;flex-direction:column;text-align:center;padding:.5rem}.nk-upload-files li img{width:60px;flex-shrink:0;border-radius:4px}.is-multiple .nk-upload-files li img{width:40px}.is-multiple .nk-upload-files li .nk-upload-name{display:none}.nk-upload-name{margin:.5rem 0 0;color:#526484;font-size:.8125rem;font-weight:500;width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nk-upload-response{margin-left:auto;display:inline-flex;align-items:center}.nk-upload-response .message{font-size:12px;color:#8094ae}.nk-upload-response .message+.icon{margin-left:.5rem}.nk-upload-response .icon:after{font-family:"Nioicon"}.nk-upload-response .icon+.message{margin-left:.5rem}.nk-upload-response.invalid .icon{color:#f4bd0e}.nk-upload-response.invalid .icon:after{content:""}.nk-upload-response.valid .icon{color:#1ee0ac}.nk-upload-response.valid .icon:after{content:""}.nk-upload-response.error .icon{color:#e85347}.nk-upload-response.error .icon:after{content:""}.nk-upload-foot{display:flex;justify-content:space-between;border-top:1px dashed #e5e9f2;padding:1rem 1.25rem;margin:0 -1.5rem}.nk-upload-foot>span,.nk-upload-foot>button{margin:.25rem}.form-editor-custom textarea{border-radius:4px 4px 0 0}.form-editor-action{border:1px solid #dbdfea;border-top:0;border-radius:0 0 4px 4px;padding:.25rem .5rem}.form-editor-action>.link{padding:.5rem}.form-editor-action>.link.collapsed{color:#8094ae}.form-editor-action>.link .icon{margin-right:.25rem}.form-editor-btn-group,.form-btn-group{display:flex;align-items:center;margin:-0.25rem;flex-wrap:wrap}.form-editor-btn-group li,.form-btn-group li{padding:.25rem;line-height:.5rem}.form-btn-group li:first-child{margin-right:.5rem}.form-btn-secondary{margin-left:auto}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.number-spinner{padding-left:3.125rem;padding-right:3.125rem;text-align:center}.number-spinner:focus{border-color:#dbdfea}.number-spinner-btn{position:absolute;top:0}.number-plus{right:0;border-top-left-radius:0;border-bottom-left-radius:0}.number-minus{left:0;border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon{display:flex;align-items:center;padding:.25rem .75rem;background-color:#f5f6fa;border:1px solid #dbdfea;font-size:.75rem;border-radius:4px}.input-group-addon:not(:last-child){border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:not(:first-child){border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill,textarea:-webkit-autofill:hover,textarea:-webkit-autofill:focus,select:-webkit-autofill,select:-webkit-autofill:hover,select:-webkit-autofill:focus{-webkit-text-fill-color:#3c4d62;transition:background-color 5000s ease-in-out 0s}.page-title{font-family:Nunito,sans-serif;font-size:1.5rem;font-weight:700}@media(min-width: 992px){.page-title{font-size:1.75rem}}.overline-title{font-size:11px;line-height:1.2;letter-spacing:.2em;color:#8094ae;text-transform:uppercase;font-weight:700;font-family:Roboto,sans-serif}.text-light .overline-title{color:#8094ae}.is-dark .overline-title{color:#b7c2d0}.is-theme .overline-title{color:#abe2d3}.overline-title-alt{font-family:Roboto,sans-serif;font-weight:700;line-height:1.2;letter-spacing:.15em;font-size:11px;color:#8094ae;text-transform:uppercase}.is-dark .overline-title-alt{color:#8094ae}.is-theme .overline-title-alt{color:#abe2d3}.overline-title-sap{position:relative;display:inline-block;margin-bottom:0;padding-left:.35rem;padding-right:.25rem;color:#b6c6e3}.overline-title-sap:before,.overline-title-sap:after{position:absolute;top:50%;transform:translateY(-50%);width:20px;height:1px;content:"";background:#b6c6e3}.overline-title-sap:before{right:100%}.overline-title-sap:after{left:100%}.caption-text{font-size:16px;font-weight:400;line-height:1.3;letter-spacing:-0.01em}.caption-text+.sub-text,.caption-text+.sub-text-sm{margin-top:.5rem;display:block}.lead-text{font-size:.875rem;font-weight:700;color:#364a63;display:block}.lead-text+.sub-text{font-size:12px}.lead-text span{color:#526484;font-weight:400}.lead-text-lg{font-size:1.125rem;font-weight:500;color:#364a63;display:block}.is-theme .lead-text-lg{color:#fff}.is-theme .is-light .lead-text-lg{color:#364a63}.is-dark .lead-text{color:#b7c2d0}.is-dark .lead-text span{color:#8091a7}.is-theme .lead-text{color:#fff}.is-theme .lead-text span{color:#abe2d3}.is-theme .is-light .lead-text,.is-dark .is-light .lead-text{color:#364a63}.is-theme .is-light .lead-text span,.is-dark .is-light .lead-text span{color:#526484}.sub-text{display:block;font-size:13px;color:#8094ae}.sub-text span+.dot,.sub-text .dot+span{margin-left:.25rem}.sub-text-sm,.sub-text+.sub-text{font-size:12px}.sub-text-sm{color:#8094ae}.is-theme .sub-text-sm{color:#abe2d3}.is-theme .is-light .sub-text-sm{color:#8094ae}.text-ellipsis .sub-text{display:inline}.sub-text strong{color:#526484;font-weight:700}.is-theme .sub-text strong{color:#abe2d3}.is-theme .is-light .sub-text strong{color:#526484}.sub-text span{white-space:nowrap}.is-theme .sub-text{color:#abe2d3}.is-theme .is-light .sub-text{color:#8094ae}.text-date span{color:#526484}h6 .badge,.h6 .badge{margin-left:.5rem}.fs-9px{font-size:9px}.fs-10px{font-size:10px}.fs-11px{font-size:11px}.fs-12px{font-size:12px}.fs-13px{font-size:13px}.fs-14px{font-size:14px}.fs-15px{font-size:15px}.fs-16px{font-size:16px}.fs-17px{font-size:17px}.fs-18px{font-size:18px}.fs-19px{font-size:19px}.fs-20px{font-size:20px}.fs-21px{font-size:21px}.fs-22px{font-size:22px}.note-text{font-size:12px;font-style:italic;color:#8094ae}.is-dark .title{color:#b7c2d0}.is-theme .title{color:#abe2d3}.card{border:1px solid #dbdfea}.card .table{margin-bottom:0}.card .table tr:first-child th,.card .table tr:first-child td{border-top:none}.card .table tr:last-child td:first-child{border-bottom-left-radius:4px}.card .table tr:last-child td:last-child{border-bottom-right-radius:4px}.card .table tr:first-child th:first-child{border-top-left-radius:4px}.card .table tr:first-child th:last-child{border-top-right-radius:4px}.card+.lead-text{margin-top:2rem}.lead-text+.card{margin-top:1rem}.card-custom-s1 .card-inner-group .card-inner{border-bottom:1px solid #dbdfea}@media(max-width: 991.98px){.card-custom-s1 .card-inner-lg{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width: 992px){.card-custom-s1 .card-inner-group{border-right:1px solid #dbdfea}.card-custom-s1 .card-inner-group .card-inner:last-child{border-bottom:none}}@media(min-width: 576px){.card-search .card-body{padding:1.5rem}}.card-aside{width:300px;background-color:#fff;min-height:100vh;flex-shrink:0}.card-aside-left{order:-1;border-right:1px solid #e5e9f2}.card-aside-right{order:100;border-left:1px solid #e5e9f2}.card-aside-wrap{display:flex}.card-aside-wrap .card-inner,.card-aside-wrap .card-content{flex-grow:1}@media(max-width: 767.98px){.toggle-break-md.card-aside .card-inner-group{max-height:calc(100vh - 65px);margin-top:65px}}@media(max-width: 991.98px){.toggle-break-lg.card-aside .card-inner-group{max-height:calc(100vh - 65px);margin-top:65px}}@media(max-width: 1199.98px){.toggle-break-xl.card-aside .card-inner-group{max-height:calc(100vh - 65px);margin-top:65px}}@media(max-width: 1539.98px){.toggle-break-xxl.card-aside .card-inner-group{max-height:calc(100vh - 65px);margin-top:65px}}@media(min-width: 992px){.card-aside{position:static;display:block}}@media(min-width: 1540px){.card-aside{width:380px}}.user-avatar,[class^=user-avatar]:not([class*=-group]){border-radius:50%;height:40px;width:40px;display:flex;justify-content:center;align-items:center;color:#fff;background:#3fbd9a;font-size:14px;font-weight:500;letter-spacing:.06em;flex-shrink:0;position:relative}.user-avatar+.user-info,[class^=user-avatar]:not([class*=-group])+.user-info{margin-left:1rem}.user-avatar+.user-name,[class^=user-avatar]:not([class*=-group])+.user-name{margin-left:.75rem}.user-avatar img,[class^=user-avatar]:not([class*=-group]) img{border-radius:50%}.user-avatar.md+.user-info,[class^=user-avatar]:not([class*=-group]).md+.user-info{margin-left:1.5rem}.user-avatar.md+.user-name,[class^=user-avatar]:not([class*=-group]).md+.user-name{margin-left:1.25rem}.user-avatar .edit,[class^=user-avatar]:not([class*=-group]) .edit{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background-color:rgba(31,43,58,.5);display:flex;justify-content:center;align-items:center;color:#fff;opacity:0;transition:opacity .3s}.user-avatar:hover .edit,[class^=user-avatar]:not([class*=-group]):hover .edit{opacity:1}.user-avatar .status,[class^=user-avatar]:not([class*=-group]) .status{border:2px solid #fff;position:absolute;bottom:0;right:0}.user-avatar.sq,[class^=user-avatar]:not([class*=-group]).sq{border-radius:4px}.user-avatar.sq img,[class^=user-avatar]:not([class*=-group]).sq img{border-radius:4px}.user-avatar.sq .status,[class^=user-avatar]:not([class*=-group]).sq .status{bottom:-6px;right:-6px}.user-avatar-multiple{background-color:rgba(0,0,0,0) !important}.user-avatar-multiple .user-avatar{position:absolute;height:70%;width:70%;font-size:80%;border:2px solid #fff}.user-avatar-multiple .user-avatar:nth-child(1){top:0;right:0}.user-avatar-multiple .user-avatar:nth-child(2){bottom:0;left:0}.user-card .user-avatar.d-none{margin-right:1rem}.user-card .user-avatar.d-none+.user-info,.user-card .user-avatar.d-none+.user-name{margin-left:0}.user-avatar-xl,.user-avatar.xl{height:110px;width:110px;font-size:40px;font-weight:400}.user-avatar-xl .status,.user-avatar.xl .status{bottom:9px;right:9px}.user-avatar-lg,.user-avatar.lg{height:80px;width:80px;font-size:28px;font-weight:400}.user-avatar-lg .status,.user-avatar.lg .status{bottom:5px;right:5px}.user-avatar-md,.user-avatar.md{height:60px;width:60px;font-size:18px}.user-avatar-md .status,.user-avatar.md .status{bottom:2px;right:2px}.user-avatar-sm,.user-avatar.sm{height:32px;width:32px;font-size:12px}.user-avatar-sm .status,.user-avatar.sm .status{bottom:-2px;right:-2px}.user-avatar-xs,.user-avatar.xs{height:26px;width:26px;font-size:9px;font-weight:700}.user-avatar-xs .status,.user-avatar.xs .status{bottom:-2px;right:-2px}.user-avatar[class*=-blue-dim]{color:#559bfb}.user-avatar[class*=-azure-dim]{color:#1676fb}.user-avatar[class*=-indigo-dim]{color:#2c3782}.user-avatar[class*=-purple-dim]{color:#816bff}.user-avatar[class*=-pink-dim]{color:#ff63a5}.user-avatar[class*=-orange-dim]{color:#ffa353}.user-avatar[class*=-teal-dim]{color:#20c997}.user-avatar[class*=-primary-dim]{color:#0fac81}.user-avatar[class*=-secondary-dim]{color:#364a63}.user-avatar[class*=-success-dim]{color:#1ee0ac}.user-avatar[class*=-info-dim]{color:#09c2de}.user-avatar[class*=-warning-dim]{color:#f4bd0e}.user-avatar[class*=-danger-dim]{color:#e85347}.user-avatar[class*=-dark-dim]{color:#1f2b3a}.user-avatar[class*=-gray-dim]{color:#8091a7}.user-avatar[class*=-lighter]{color:#8094ae}.user-avatar[class*=-light]{color:#526484}.user-card{display:flex;align-items:center}.user-card-wrap{padding-top:1.125rem;padding-bottom:1.125rem}.user-card .user-info{color:#8094ae}.user-card-menu{position:absolute;right:1rem;top:1rem}.user-toggle{display:flex;align-items:center;padding:0 1px 1px}.user-status{font-size:11px;font-weight:500;line-height:1;padding-top:.125rem;padding-bottom:.375rem}.user-status-unverified{color:#e85347}.user-status-verified{color:#1ee0ac}.user-name{color:#526484;font-size:12px;line-height:16px;font-weight:700}.is-dark .user-name{color:#90a1b8}.is-theme .user-name{color:#abe2d3}.user-action{margin-left:auto;font-size:20px;color:#8094ae}.user-account-info{padding-top:1.5rem;padding-bottom:1.25rem}.user-account-data li{display:flex;justify-content:space-between;padding:.125rem 0}.user-account-actions:not(:first-child){margin-top:1.5rem}.user-account-actions ul{display:flex}.user-account-actions ul li{width:44%}.user-account-actions ul li:last-child{width:56%}.user-account-actions .btn,.user-account-actions .dual-listbox .dual-listbox__button,.dual-listbox .user-account-actions .dual-listbox__button{width:100%;font-size:12px;letter-spacing:.04em;padding-left:.5rem;padding-right:.5rem;text-transform:uppercase}.user-account-links{padding:1rem 0;border-bottom:1px solid #e5e9f2}.user-account-info .user-account-links:last-child{border-bottom:0;padding-bottom:0}.user-account-info+.user-account-links{padding-top:0;margin-top:-0.5rem}.user-account-links a:link{padding:.5rem 0;display:flex}.user-account-value{display:inline-flex}.user-balance{font-size:1.5rem;line-height:1;padding:.125rem 0 .375rem;color:#0fac81}.user-balance small,.user-balance .small{font-size:1rem}.user-balance-alt{font-size:15px;color:#526484;font-weight:700}.user-balance-alt span{font-weight:400}.user-balance-sub{font-size:13px;color:#8094ae}.user-balance-sub span{color:#526484}.user-balance-sub+a{margin-top:1rem}.user-card-s2{display:flex;flex-direction:column;text-align:center;padding:.5rem}.user-card-s2 .user-avatar{margin:0 auto}.user-card-s2 .user-info{margin:1.25rem 0 0 !important}.user-card-s2 .user-info .sub-text{justify-content:center}.user-card-s2 .user-info .badge{margin-bottom:1rem}.user-card-md .lead-text{font-size:1rem}.user-card-md .sub-text{font-size:.875rem}.user-activity{display:flex}.user-activity-group{display:flex;flex-wrap:wrap}.user-activity-ck{height:110px;padding:.5rem .375rem 0}.user-activity .icon{width:2.25rem;font-size:1.5rem;color:#8094ae}.user-activity .info span{display:block}.user-activity .amount{font-size:1.125rem;line-height:1.3;font-weight:500;color:#526484}.user-activity .title{font-size:12px;color:#8094ae}.user-activity .gfx{align-self:flex-end;width:50px;margin-left:1rem;margin-bottom:.25rem}.user-contacts li{color:#526484;display:flex;font-size:.875rem;line-height:1.4rem;padding:.375rem 0}.user-contacts li .icon{color:#8094ae;font-size:1rem;width:1.75rem;line-height:inherit;display:inline-block}.user-avatar-group{display:flex}.user-avatar-group .user-avatar{border:2px solid #fff}.user-avatar-group .user-avatar:not(:first-child){margin-left:-20%}.user-avatar-group .user-avatar.sm:not(:first-child){margin-left:-1rem}.user-avatar-group .user-avatar.xs:not(:first-child){margin-left:-0.5rem}.user-info .lead-text,.user-info .sub-text{display:flex;align-items:center}.user-info .edit{font-size:1.25rem;color:#8094ae;margin-left:.5rem;display:inline-flex}.user-info .edit:hover{color:#0fac81}.user-plan{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.75rem 0}.user-plan-title{display:flex;align-items:center;color:#364a63;font-weight:700;font-size:1rem}.user-plan-title .icon{font-size:1.5rem;margin-right:.75rem;color:#0fac81}.user-plan-info,.user-plan-actions{padding:.5rem 0}.user-plan-status{font-size:13px;font-weight:500;color:#8094ae;text-transform:uppercase;margin-top:.5rem}.user-plan-progress{width:100%;margin-top:1rem}.data-list:not(:first-child){margin-top:1.5rem}.data-item{position:relative;padding:1rem 1.25rem;display:flex;align-items:center}.data-item .icon{color:#8094ae;text-align:center;height:32px;vertical-align:middle;line-height:32px;display:inline-block}.data-item:not(:last-child){border-bottom:1px solid #e5e9f2}.data-item[data-toggle]{cursor:pointer}.data-item:hover .data-label{color:#526484}.data-item:hover .data-value,.data-item:hover .icon{color:#364a63}.data-head{padding:.5rem 1.25rem;margin-bottom:.25rem;background-color:#ebeef2;border-radius:4px}.data-head.is-plain{margin-bottom:0;background-color:rgba(0,0,0,0)}.data-head.is-plain:first-child{margin-top:1rem}.data-head .title{color:#526484}.data-col{flex-grow:1}.data-col span:not(.data-more){display:inline-block;transition:color .3s}.data-col-end{flex-grow:0;margin-left:auto}.data-label{color:#8094ae;width:100%;flex-shrink:0}.data-value{color:#526484;font-size:.9375rem}.data-more{position:relative;z-index:4;text-align:center;line-height:28px;height:28px;width:28px;display:inline-grid;align-content:center}.data-more:before{position:absolute;z-index:-1;height:20px;width:20px;top:50%;left:50%;transform:translate(-50%, -50%);transform-origin:50% 50%;content:"";background-color:#e5e9f2;border-radius:50%;opacity:0;transition:all .3s}.data-item:hover .data-more:before{opacity:1;height:40px;width:40px}.data-more.disable:before{display:none}.data-list-s2:not(:first-child){margin-top:1rem}.data-list-s2 .data-item,.data-list-s2 .data-head{padding-left:0;padding-right:0;background:rgba(0,0,0,0)}.data-list-s2 .data-head{border-bottom:1px solid #dbdfea}.data-list-s2 .data-item:not(:last-child){border-bottom-color:#dbdfea}.data-list-s2 .data-label{color:#526484}.data-list-s2 .data-placeholder{color:#8094ae}@media(min-width: 768px){.data-list:not(:first-child){margin-top:2rem}.data-list-s2:not(:first-child){margin-top:1.25rem}.data-item{padding:1.5rem 1.25rem}.data-col{display:flex;align-items:center}.data-col-end{width:200px;text-align:right;justify-content:flex-end}.data-label:not([class^=w-]){width:50%}}@media(min-width: 1200px)and (max-width: 1359px){.card-aside-wrap .data-list .data-col{flex-wrap:wrap}.card-aside-wrap .data-list .data-label{width:100%}}.is-compact .data-item{padding-top:.75rem;padding-bottom:.75rem}.is-medium .data-item{padding-top:1.125rem;padding-bottom:1.125rem}.dropdown-menu .nk-notification{max-height:239px;overflow:auto}.nk-notification-item{display:flex;align-items:center;padding:1.25rem 1.75rem}.nk-notification-icon{flex-shrink:0;margin-right:.75rem}.nk-notification-text{font-size:13px;color:#526484}.nk-notification-text span{color:#364a63}.nk-notification-time{font-size:11px;color:#8094ae}.dropdown-menu .nk-chat-list,.dropdown-menu .chat-list{max-height:274px;overflow:auto}.icon-light{color:#fff}.icon-dark{color:#364a63}.icon-text{display:flex;align-items:center;font-size:13px}.icon-text .icon{font-size:1.5em;width:1.75rem}.icon-image{width:70px}.icon-image+h6,.icon-image+.h6{margin-top:1rem}.icon-circle{display:inline-flex;justify-content:center;align-items:center;border-radius:50%;background:#0fac81;color:#fff;font-size:18px;height:36px;width:36px}.icon-circle-sm,.icon-circle.sm{height:20px;width:20px;font-size:12px}.icon-circle-md,.icon-circle.md{height:28px;width:28px;font-size:14px}.icon-circle-lg,.icon-circle.lg{height:44px;width:44px;font-size:24px}.icon-circle-xxl,.icon-circle.xxl{height:80px;width:80px;font-size:40px}.icon-status{position:relative;display:inline-flex}.icon-status:after{position:absolute;border-radius:50%;right:0;top:1px;height:10px;width:10px;border:2px solid #fff;content:""}.icon-status-info:after{background:#09c2de}.icon-status-danger:after{background:#e85347}.icon-status-success:after{background:#1ee0ac}.icon-status-warning:after{background:#f4bd0e}.icon-status-on:after{background:#1ee0ac}.icon-status-off:after{background:#8094ae}.icon-status-na:after{display:none}.icon-overlap{display:inline-flex;align-items:center;flex-direction:row-reverse;flex-shrink:0}.icon-overlap li{border-radius:50%;border:2px solid #fff}.icon-overlap li+li{margin-right:-14px}.icon-overlap-alt{display:inline-flex;align-items:flex-end;flex-shrink:0}.icon-overlap-alt li{border-radius:50%}.icon-overlap-alt li+li{margin-left:-16px;margin-bottom:-10px}.icon-circle[class*=btc]{background:#f9841e}.icon-circle[class*=facebook]{background:#3b5998}.icon-circle[class*=google]{background:#de5246}.icon-circle[class*=btc-dim]{background:#feefe2}.icon-circle[class*=eth-dim]{background:#eaedf6}.icon-circle[class*=white]{background:#fff}.icon[class*=bg-blue-dim]{color:#559bfb}.icon[class*=bg-azure-dim]{color:#1676fb}.icon[class*=bg-indigo-dim]{color:#2c3782}.icon[class*=bg-purple-dim]{color:#816bff}.icon[class*=bg-pink-dim]{color:#ff63a5}.icon[class*=bg-orange-dim]{color:#ffa353}.icon[class*=bg-teal-dim]{color:#20c997}.icon[class*=bg-primary-dim]{color:#0fac81}.icon[class*=bg-secondary-dim]{color:#364a63}.icon[class*=bg-success-dim]{color:#1ee0ac}.icon[class*=bg-info-dim]{color:#09c2de}.icon[class*=bg-warning-dim]{color:#f4bd0e}.icon[class*=bg-danger-dim]{color:#e85347}.icon[class*=bg-light]{color:#526484}.icon[class*=bg-lighter]{color:#8094ae}.icon[class*=bg-dark-dim]{color:#dde2ea}.icon[class*=bg-gray-dim]{color:#e9f0f9}.icon[class*=bg-facebook-dim]{color:#3b5998}.icon[class*=bg-google-dim]{color:#de5246}.icon[class*=bg-btc-dim]{color:#f9841e}.icon[class*=bg-eth-dim]{color:#6174b9}.icon[class*=bg-white]{color:#526484}.icon-avatar{width:1.5rem;height:1.5rem;display:inline-block;text-align:center;line-height:1.5rem;border-radius:50%;background:#cfeee6;color:#3fbd9a;margin-right:.5rem;font-size:12px}.icon-avatar-md{width:2rem;height:2rem;line-height:2rem;font-size:14px}.tb-col-hide,.tb-col-xxl,.tb-col-xl,.tb-col-lg,.tb-col-md,.tb-col-sm,.tb-col-xs,.tb-col-mb{display:none !important}@media(min-width: 576px){.tb-col-sm{display:table-cell !important}}@media(min-width: 768px){.tb-col-md{display:table-cell !important}}@media(min-width: 992px){.tb-col-lg{display:table-cell !important}}@media(min-width: 1200px){.tb-col-xl{display:table-cell !important}}@media(min-width: 1540px){.tb-col-xxl{display:table-cell !important}}@media(min-width: 359px){.tb-col-xs{display:table-cell !important}}@media(min-width: 414px){.tb-col-mb{display:table-cell !important}}.table-middle td,.tb-row-middle td{vertical-align:middle}.tb-col-end,.tb-col-action{text-align:right}.tb-col-middle{vertical-align:middle}.tb-col-action .link-cross,.tb-col-action .link-done{font-size:1rem;text-align:center;line-height:28px;height:24px;width:24px;display:inline-block;color:#8094ae;vertical-align:middle;border-radius:12px}.tb-col-action .link-cross .icon,.tb-col-action .link-done .icon{padding-left:1px}.tb-col-action .link-cross:hover{color:#e85347;background:#fce7e5}.tb-col-action .link-done:hover{color:#1ee0ac;background:#e0fbf3}@media(max-width: 575.98px){.table-ulogs th.tb-col-ip{display:none}.table-ulogs tr{display:flex;flex-wrap:wrap;width:100%;position:relative;padding:.5rem 1.25rem}.table-ulogs tr:not(:first-child){border-top:1px solid #dbdfea}.table-ulogs tr td{padding:0;border:0}.table-ulogs tr td:first-child,.table-ulogs tr td:last-child{padding:0}.table-ulogs tr td,.table-ulogs tr th{flex-grow:1}.table-ulogs tr td.tb-col-os{width:100%}.table-ulogs tr th.tb-col-os{width:40%;min-width:142px;flex-grow:0}.table-ulogs tr td.tb-col-ip{width:40%;min-width:130px;flex-grow:0}.table-ulogs tr .tb-col-action{position:absolute;right:10px;top:50%;transform:translateY(-50%);padding:0}.table-ulogs thead tr{padding:0}}.toggle-content{opacity:0;visibility:hidden;position:absolute;top:calc(100% + 10px);z-index:9;background:#fff;border-radius:4px;box-shadow:0 3px 12px 1px rgba(43,55,72,.15);transform:translateY(10px)}.toggle-content-right{left:auto;right:0}.toggle-content-bottom{top:auto;bottom:0}.toggle-content.content-active{transition:all .2s ease;opacity:1;visibility:visible;transform:translateY(0)}.toggle-slide{position:fixed;top:0;z-index:999;min-width:260px;max-width:calc(100% - 40px);transition:transform 650ms ease}.toggle-slide-left{left:0;transform:translateX(-100%)}.toggle-slide-right{right:0;transform:translateX(100%)}.toggle-slide.content-active{transform:translate(0) !important}.toggle-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(31,43,58,.2);z-index:900;animation:overlay-fade-in .4s ease 1}.toggle-expand-content{display:none}.toggle-expand-content.expanded{display:block}.toggle-expand .inactive-text,.toggle-opt .inactive-text{display:block}.toggle-expand.active>.inactive-text,.toggle-opt.active>.inactive-text{display:none}.toggle-expand .active-text,.toggle-opt .active-text{display:none}.toggle-expand.active>.active-text,.toggle-opt.active>.active-text{display:block}body.toggle-shown{overflow:hidden}@media(min-width: 576px){.nk-block-tools-toggle .toggle-expand{display:none}.nk-block-tools-toggle .toggle-expand-content{display:block !important}}@media(max-width: 575.98px){.nk-block-tools-toggle .toggle-expand-content{position:absolute;left:0;right:0;top:100%;z-index:99;padding:0 18px !important;background:#fff;margin-left:-18px;margin-right:-18px;box-shadow:0 20px 35px rgba(0,0,0,.2)}.nk-block-tools-toggle .nk-block-tools{padding-top:20px;padding-bottom:20px}.nk-block-tools-toggle .nk-block-tools-opt{margin-left:auto}}@media(max-width: 575.98px){.card-tools-toggle .card-title-group{position:static}.card-tools-toggle .toggle-wrap .toggle-content{padding:1.25rem 1rem;transform:translate(0);top:0;left:0;right:0;bottom:0}.card-tools-toggle .toggle-wrap .toggle-close{margin-right:auto}.card-tools-toggle .toggle-wrap .toggle-close .btn-trigger:before{opacity:0}.card-tools-toggle .toggle-wrap .toggle-close .btn-trigger:hover:before{opacity:1}}@media(min-width: 576px){.card-tools-toggle{z-index:9}.card-tools-toggle .toggle-wrap .toggle{display:none}.card-tools-toggle .toggle-wrap .toggle-content{z-index:9;opacity:1;visibility:visible;position:static;background:rgba(0,0,0,0);box-shadow:none;transform:translate(0)}.card-tools-toggle .toggle-wrap .toggle-close{display:none}}@media(min-width: 576px){.toggle-break-sm{transition:none;opacity:1;visibility:visible;transform:translateY(0) !important;position:static;background:rgba(0,0,0,0);box-shadow:none;z-index:1 !important}.toggle-break-sm.collapse{display:block}}@media(min-width: 768px){.toggle-break-md{transition:none;opacity:1;visibility:visible;transform:translateY(0) !important;position:static;background:rgba(0,0,0,0);box-shadow:none;z-index:1 !important}.toggle-break-md.collapse{display:block}}@media(min-width: 992px){.toggle-break-lg{transition:none;opacity:1;visibility:visible;transform:translateY(0) !important;position:static;background:rgba(0,0,0,0);box-shadow:none;z-index:1 !important}.toggle-break-lg.collapse{display:block}}@media(min-width: 1200px){.toggle-break-xl{transition:none;opacity:1;visibility:visible;transform:translateY(0) !important;position:static;background:rgba(0,0,0,0);box-shadow:none;z-index:1 !important}.toggle-break-xl.collapse{display:block}}@media(min-width: 1540px){.toggle-break-xxl{transition:none;opacity:1;visibility:visible;transform:translateY(0) !important;position:static;background:rgba(0,0,0,0);box-shadow:none;z-index:1 !important}.toggle-break-xxl.collapse{display:block}}.nav-switch{display:inline-flex;margin-bottom:1.5rem;border:1px solid #dbdfea;border-radius:30px;padding:5px}.nav-switch .nav-link{padding:5px 16px;line-height:20px;border-radius:20px;position:static;text-transform:uppercase;font-family:Roboto,sans-serif;font-weight:700;font-size:12px;color:#8094ae}.nav-switch .nav-link.active{background:#0fac81;color:#fff}.nav-switch .nav-link:after{display:none}.nav-switch .nav-item{padding:0;margin:0 1px}.nav-switch .nav-item:last-child{margin-right:0}.nav-switch .nav-item:first-child{margin-left:0}@media(min-width: 576px){.nav-switch{margin-bottom:2.5rem}}.nav-switch-s2{display:inline-flex;border-radius:4px;border:none}.nav-switch-s2 .nav-link{padding:.25rem .7rem;line-height:20px;border-radius:0;position:static;text-transform:uppercase;font-family:Roboto,sans-serif;font-weight:700;font-size:12px;color:#8094ae;border:1px solid #dbdfea}.nav-switch-s2 .nav-link:hover,.nav-switch-s2 .nav-link:focus{color:#526484;background:#f5f6fa;border:1px solid #dbdfea}.nav-switch-s2 .nav-link.active{color:#364a63;border:1px solid #dbdfea;background:#f5f6fa;box-shadow:inset 0 0 4px -1px rgba(128,148,174,.25)}.nav-switch-s2 .nav-link:after{display:none}.nav-switch-s2 .nav-item{padding:0;margin:0}.nav-switch-s2 .nav-item:last-child{margin-right:0}.nav-switch-s2 .nav-item:last-child .nav-link{border-radius:0 4px 4px 0}.nav-switch-s2 .nav-item:first-child{margin-left:0}.nav-switch-s2 .nav-item:first-child .nav-link{border-radius:4px 0 0 4px}.nav-switch-s2 .nav-item:not(:first-child){margin-left:-1px}.widget-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.widget-title>*{margin-bottom:0}.text-center .widget-title{justify-content:center}.is-theme .widget-title a:hover{color:#fff}.side-wg:not(:last-child){margin-bottom:2.5rem}.side-wg-title{padding-bottom:.75rem}.side-wg .back-to{font-size:.875rem;line-height:1.1;font-weight:400;position:relative;color:#8094ae;display:inline-flex;align-items:center}.side-wg .back-to .icon{font-size:1.25rem;width:1.75rem;margin-top:-3px;display:inline-block}.nk-ck{height:260px}.nk-ck-sm{height:180px}.nk-ck1{height:120px}.nk-ck2{height:240px}.nk-ck3{height:160px}.nk-cktv{height:300px;overflow:hidden;border:1px solid #dbdfea;border-radius:4px}.nk-cktv .tradingview-widget-container{overflow:hidden;position:relative;top:8px}.nk-cktv .tradingview-widget-container>div{margin:-1px}@media(min-width: 576px){.nk-ck{height:260px}.nk-ck-sm{height:180px}.nk-ck1{height:120px}.nk-ck2{height:240px}.nk-ck3{height:258px}}.nk-wg6-title:not(:first-child){margin-top:1.5rem}.nk-wg6-title:not(:last-child){margin-bottom:1.5rem}.nk-wg6-text:not(:last-child){margin-bottom:1.5rem}.aside-wg+.aside-wg{padding-top:2rem}.nk-modal-title:not(:first-child){margin-top:1.5rem}.nk-modal-title:not(:last-child){margin-bottom:1.5rem}.nk-modal-title.title{font-size:1.5rem}.nk-modal-text:not(:last-child){margin-bottom:1.5rem}.nk-modal-text .lead{font-size:1.1rem;line-height:1.5}.nk-modal-text .sub-text{font-size:14px}.nk-modal-action{margin-top:1.5rem}.nk-modal-action-sm{margin-top:1rem}.nk-modal-action-md{margin-top:2rem}.nk-modal-action-lg{margin-top:2.25rem}.modal-body-lg .tab-content{margin-top:2rem}@media(min-width: 576px){.nk-modal-action-md{margin-top:2.5rem}.nk-modal-action-lg{margin-top:3.25rem}}[data-bs-toggle=modal]{cursor:pointer}.search-wrap{position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;background:#fff;transition:opacity .4s;border-radius:6px;pointer-events:none;display:flex;align-items:center}.search-wrap.active{opacity:1;z-index:9;pointer-events:auto}.search-wrap-extend{margin-top:-1rem;left:-2px;right:-2px}.search-toggle{transition:all .4s;opacity:1}.search-toggle.active{opacity:0}.search-content{position:relative;width:100%}.search-content .form-control,.search-content div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .search-content input,.search-content .dual-listbox .dual-listbox__search,.dual-listbox .search-content .dual-listbox__search{padding-left:calc(2.125rem + 2px);padding-right:calc(2.125rem + 2px)}.search-content .form-control-sm{padding-left:calc(1.75rem + 2px);padding-right:calc(1.75rem + 2px)}.search-back,.search-submit{position:absolute;top:50%}.search-back:focus,.search-submit:focus{box-shadow:none}.search-back{left:0;transform:translate(-0.25rem, -50%)}.search-submit{right:0;transform:translate(0.5rem, -50%)}.search-submit:hover{color:#0fac81}.nk-search-box{margin-top:1.5rem;margin-bottom:1.25rem}.nk-search-box .form-icon{height:100%;border:none;background:rgba(0,0,0,0);width:3.5rem}.nk-search-box .form-control,.nk-search-box div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .nk-search-box input,.nk-search-box .dual-listbox .dual-listbox__search,.dual-listbox .nk-search-box .dual-listbox__search{border-radius:1.5rem;padding-left:1.25rem;padding-right:1.5rem}.nk-block+.nk-block,.nk-block+.nk-block-head{padding-top:28px}.nk-block+.nk-block-lg,.nk-block+.nk-block-head-lg{padding-top:2.5rem}.nav-tabs+.nk-block{padding-top:1.5rem}.nav-tabs+.nk-block-sm{padding-top:1rem}.nk-block-area{display:flex}.nk-block-area-column{flex-direction:column}.nk-block-between{display:flex;justify-content:space-between;align-items:center}.nk-block-between>.title:first-child{margin-bottom:0}.nk-block-middle{margin-top:auto;margin-bottom:auto}.nk-block-head{position:relative;padding-bottom:1.25rem}.nk-block-head:only-child{padding-bottom:0}.nk-block-head h2:not(:last-child),.nk-block-head .h2:not(:last-child){margin-bottom:1rem}.nk-block-head-sub{font-size:1rem;line-height:1.5rem;margin-bottom:.5rem;color:#8094ae;font-weight:400;position:relative}.nk-block-head-sub .back-to{color:inherit;display:inline-flex;align-items:center}.nk-block-head-sub .back-to .icon{font-size:1.5rem;width:2rem;margin-top:-3px;display:inline-block}.nk-block-head-sub .dropdown{position:absolute;right:-8px;top:-6px}.nk-block-head-xs{padding-bottom:.75rem}.nk-block-head-sm{padding-bottom:1rem}.nk-block-head-lg{padding-bottom:1.5rem}.nk-block-head+.nav-tabs{margin-top:-1rem}.nk-content-body>.nk-block-head:first-child{padding-bottom:1.25rem}.nk-block-head .nk-block-text{margin-top:1.5rem}.nk-block-head .nk-block-text+.btn,.nk-block-head .dual-listbox .nk-block-text+.dual-listbox__button,.dual-listbox .nk-block-head .nk-block-text+.dual-listbox__button{margin-top:1.5rem}.nk-block-tools{display:flex;align-items:center}.nk-block-tools>*{display:inline-flex}.nk-block-des{color:#526484}.nk-block-des strong{color:#364a63}.nk-block-des .icon{vertical-align:middle}.nk-block-content+.nk-block-head{padding-top:2rem}.nk-block-content+.nk-block-head-sm{padding-top:1.5rem}.nk-block-content-head:not(:last-child){margin-bottom:1rem}.nk-block-title-group{display:flex;justify-content:space-between;align-items:center}.nk-block-title-group .title{margin-bottom:0}.nk-block-title-group:not(:last-child){margin-bottom:.5rem}@media(min-width: 576px){.nk-block-head-lg{padding-bottom:2.5rem}.nk-content-body>.nk-block-head:first-child{padding-bottom:1.5rem}.nk-block-content+.nk-block-head{padding-top:4rem}.nk-block-content+.nk-block-head-sm{padding-top:2.5rem}}@media(min-width: 768px){.nk-content-body>.nk-block-head:first-child{padding-bottom:2.5rem}.nk-content-body>.nk-block-head-sm:first-child{padding-bottom:1.75rem}.nav-tabs+.nk-block{padding-top:2.5rem}.nav-tabs+.nk-block-sm{padding-top:2rem}.nav-tabs+.nk-block-xs{padding-top:1.25rem}.nk-block-text h5,.nk-block-text .h5,.nk-block-text h6,.nk-block-text .h6{font-size:1rem}}@media(max-width: 767.98px){.nk-block-tools .opt-menu-md{order:100;margin-left:auto}}@media(min-width: 768px){.nk-block-between-md{display:flex;justify-content:space-between;align-items:center}}.nk-block-subhead{padding-bottom:.5rem;border-bottom:1px solid #dbdfea}.nk-feature-center{text-align:center}.filter-wg label.overline-title{margin-bottom:.5rem}.change{line-height:1}.change .sign{font-family:"Nioicon"}.change .sign:before{content:""}.change.up{color:#1ee0ac !important}.change.up .sign:before{content:""}.change.down{color:#e85347 !important}.change.down .sign:before{content:""}.nk-knob>div{position:relative;display:inline-block !important}.knob{height:100% !important;margin-top:0 !important;font-size:1.5rem !important}.knob-half{height:50% !important;font-size:1.25rem !important}[class*=knob]{text-align:center;pointer-events:none;width:100% !important;font-weight:400 !important;font-family:Roboto,sans-serif !important;color:#364a63 !important;margin-left:0 !important;left:0;border:none}[class*=knob]:focus{outline:none}.stats{padding:0 0 1rem}@media(min-width: 1540px){.nk-content-sidebar .stats{padding:1.25rem 1.5rem 1rem}}.collapse-shown{display:inline-block !important}.collapsed .collapse-shown{display:none !important}.collapse-hidden{display:none !important}.collapsed .collapse-hidden{display:inline-block !important}.clipboard-init{cursor:pointer}.clipboard-success .clipboard-init{color:#1bca9b}.clipboard-text{font-size:12px}.clipboard-success .form-control:focus,.clipboard-success div.dataTables_wrapper div.dataTables_filter input:focus,div.dataTables_wrapper div.dataTables_filter .clipboard-success input:focus,.clipboard-success .dual-listbox .dual-listbox__search:focus,.dual-listbox .clipboard-success .dual-listbox__search:focus{border-color:#dbdfea;box-shadow:inset 0 1px 1px rgba(16,25,36,.075)}.nk-news-item{display:flex;align-items:center}.nk-news-icon{width:2rem;display:inline-flex;flex-shrink:0}.nk-news-icon .icon{font-size:24px;color:#0fac81}.is-theme .nk-news-icon .icon{color:#11c393}.nk-news-icon img{width:24px}.nk-news-text{display:flex;align-items:center;max-width:calc(100% - 1.5rem)}.nk-news-text p{font-size:13px;margin-bottom:0;color:#526484;font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:calc(100% - 2rem)}.nk-news-text p span{color:#8094ae;font-weight:400}.is-dark .nk-news-text p{color:#90a1b8}.is-dark .nk-news-text p span{color:rgba(128,148,174,.9)}.is-theme .nk-news-text p{color:#bee9dd}.is-theme .nk-news-text p span{color:rgba(171,226,211,.8)}.nk-news-text .icon{color:#8094ae;margin-left:.25rem}.is-dark .nk-news-text .icon{color:#8094ae}.is-theme .nk-news-text .icon{color:#abe2d3}.nk-news-item:hover .nk-news-text .icon{color:#0fac81}.language-list li:not(:last-child) .language-item{border-bottom:1px solid #ecf2ff}.language-item{display:flex;align-items:center;padding:12px 20px;color:#344357;transition:all .4s}.language-item:hover{color:#3c4d62;background:#ebeef2}.language-name{font-size:12px}.language-flag{width:24px;margin-right:12px}.entry img,.entry .video,.entry .image-group{border-radius:4px}.entry img+p,.entry img+h2,.entry img+.h2,.entry img+h3,.entry img+.h3,.entry img+h4,.entry img+.h4,.entry img+h5,.entry img+.h5,.entry img+h6,.entry img+.h6,.entry img+ul,.entry img+ol,.entry .video+p,.entry .video+h2,.entry .video+.h2,.entry .video+h3,.entry .video+.h3,.entry .video+h4,.entry .video+.h4,.entry .video+h5,.entry .video+.h5,.entry .video+h6,.entry .video+.h6,.entry .video+ul,.entry .video+ol,.entry .image-group+p,.entry .image-group+h2,.entry .image-group+.h2,.entry .image-group+h3,.entry .image-group+.h3,.entry .image-group+h4,.entry .image-group+.h4,.entry .image-group+h5,.entry .image-group+.h5,.entry .image-group+h6,.entry .image-group+.h6,.entry .image-group+ul,.entry .image-group+ol{margin-top:2rem}.entry p+img{margin-top:1rem}.entry p+h2,.entry p+.h2,.entry p+h3,.entry p+.h3,.entry p+h4,.entry p+.h4,.entry p+h5,.entry p+.h5,.entry p+h6,.entry p+.h6,.entry p+.video,.entry p+.image-group{padding-top:.75rem}p>span>.icon.ni{vertical-align:middle}.btn-trigger+.dropdown-menu-end,.btn-trigger+.dropdown-menu-start{margin:-0.75rem 0 !important}.btn-trigger+.dropdown-menu-end{margin-right:16px !important}.btn-trigger+.dropdown-menu-start{margin-left:16px}@media(max-width: 420px){.btn-trigger+.dropdown-menu-xl,.btn-trigger+.dropdown-menu-lg,.btn-trigger+.dropdown-menu-md{margin-right:-16px !important;margin-top:0 !important}}.bq-note-item:not(:first-child){margin-top:1.75rem}.bq-note-text{padding:1rem 1.25rem;background:#f5f6fa;border-radius:4px}.bq-note-meta{font-size:12px;color:#8094ae;margin-top:.75rem}.bq-note-meta span>span{color:#526484}.bq-note-meta .link{margin-left:.75rem}.bq-note-sep{height:.25rem;display:block;visibility:hidden;padding:0 .25rem}.bq-note-by{display:inline-block}@media(min-width: 576px){.bq-note-text{padding:1.25rem 1.5rem}.bq-note-sep{height:auto;display:inline-block;visibility:visible}}@media(min-width: 1200px)and (max-width: 1359px){.form-settings .col-lg-5,.form-settings .col-lg-7{flex:0 0 100%;max-width:100%}}.ratio{border-radius:4px}.video{position:relative;overflow:hidden;border-radius:4px}.video:before{position:absolute;content:"";bottom:0;right:0;left:0;height:120px;background:linear-gradient(to top, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0))}.video-play{display:flex;align-items:center;position:absolute;left:2rem;bottom:2rem;color:#fff;font-size:1.25rem}.video-play:hover{color:#fff}.video-play .icon{font-size:2rem}.nk-slider{position:relative}.nk-slider-s1{width:290px;max-width:100%}.nk-slider-s1 .slick-dots{position:absolute;right:1.25rem;top:1.5rem;padding-top:0}.nk-slider-s2 .slider-arrows>div{padding:.5rem 0}.project-head{display:flex;justify-content:space-between;margin-bottom:1.25rem;align-items:start}.project-title{display:flex;align-items:center;margin-right:.75rem}.project-title .user-avatar{margin-right:1rem}.project-title .title{font-size:.975rem}.project-title .title:not(:last-child){margin-bottom:.125rem}.project-details{margin-bottom:1rem}.project-progress{margin-bottom:1rem}.project-progress-details{display:flex;justify-content:space-between;margin-bottom:.5rem}.project-progress-task{display:flex;align-items:center;color:#8094ae}.project-progress-task .icon{font-size:1rem;line-height:1.5rem;margin-right:.25rem}.project-progress-percent{color:#526484;font-weight:500}.project-meta{display:flex;align-items:center;justify-content:space-between}.project-users{display:flex;align-items:center}.project-list-progress{display:flex;align-items:center}.project-list-progress .progress{width:100px;margin-right:.5rem}@media(min-width: 1540px){.project-list-progress .progress{width:140px;margin-right:1rem}}.team{position:relative}.team-info{padding:1rem 0 1.25rem}.team-info li{display:flex;align-items:center;justify-content:space-between;font-size:.9375rem;line-height:1.75rem}.team-info li span:first-child{color:#8094ae}.team-info li span:last-child{color:#526484}.team-status{position:absolute;left:0;display:flex;align-items:center;justify-content:center;height:20px;width:20px;border-radius:50%}.team-options{position:absolute;top:-0.25rem;right:-0.25rem}.team-details{padding-top:.5rem;text-align:center;max-width:200px;margin:0 auto}.team-statistics{display:flex;justify-content:space-around;text-align:center;padding:1rem 0 1.5rem}.team-statistics li span{display:block}.team-statistics li span:first-child{font-size:1.125rem;color:#1c2b46}.team-statistics li span:last-child{font-size:.875rem;color:#8094ae}.team-view{display:flex;justify-content:center;padding-bottom:.25rem}.rating{display:flex;align-items:center;margin:0 -0.125rem;color:#f4bd0e}.rating>*{padding:0 .125rem;display:inline-flex}.rating .icon{font-size:1rem}.rating-wrap{display:inline-flex;align-items:flex-start}.rating-wrap .amount{line-height:1.25rem}.rating-wrap .rating+span,.rating-wrap span+.rating{margin-left:.75rem}.rating-pill{padding:.35rem .875rem;border-radius:3rem}.rating-card-description .icon{color:#0fac81}.rating-card-description li{color:#8094ae}.rating-progress{display:flex;align-items:center}.icon+span,span+.icon{margin-left:.25rem}.nk-auth-body{padding:1.25rem}.nk-auth-footer{padding-bottom:40px}.nk-auth-body,.nk-auth-footer{width:100%;max-width:420px;margin-left:auto;margin-right:auto}.nk-auth-footer{padding-left:1.25rem;padding-right:1.25rem}.nk-auth-footer-full{margin-top:0}@media(min-width: 992px){.nk-auth-container{width:45%}}@media(min-width: 1540px){.nk-split .nk-auth-body,.nk-split .nk-auth-footer{margin-right:90px}}.nk-error-ld{padding:2rem 1rem}.nk-error-gfx{padding-bottom:30px;max-width:90%}.nk-error-head{font-size:160px;font-weight:700;background:-webkit-linear-gradient(#0fac81, #07523d);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);opacity:.9}.nk-error-title{padding-bottom:1rem}.nk-error-text{font-size:1rem}@media(min-width: 576px){.nk-error-lead{font-size:200px}.nk-error-gfx{padding-bottom:60px;max-width:520px}}.clipboard-success-message{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;color:#1ee0ac;background:rgba(255,255,255,.9);border-radius:4px;opacity:0;pointer-events:none;transition:opacity .3s}.clipboard-success .clipboard-success-message{opacity:1}.has-shadow.bg-lighter .card,.dual-listbox .has-shadow.dual-listbox__item:hover .card,.has-shadow.bg-lighter .sp-pdl-item,.dual-listbox .has-shadow.dual-listbox__item:hover .sp-pdl-item,.has-shadow.bg-lighter .invoice-wrap,.dual-listbox .has-shadow.dual-listbox__item:hover .invoice-wrap,.has-shadow.bg-lighter .accordion,.dual-listbox .has-shadow.dual-listbox__item:hover .accordion{box-shadow:0 0 8px -3px rgba(60,77,98,.15)}.has-shadow .card,.has-shadow .sp-pdl-item,.has-shadow .invoice-wrap,.has-shadow .accordion{box-shadow:0 0 6px -2px rgba(60,77,98,.2)}.has-shadow .data-head,.has-shadow .data-item{padding-left:1.5rem;padding-right:1.5rem}.has-shadow .card .data-head:not(.is-plain){margin-left:.75rem;margin-right:.75rem;padding-left:.75rem}.has-shadow .nav-tabs{box-shadow:0 2px 0 -1px rgba(60,77,98,.06)}.has-shadow .nk-header{box-shadow:0 3px 0 -1px rgba(60,77,98,.04)}.nio-version{text-transform:uppercase;font-size:9px;font-weight:700;letter-spacing:.02em;position:absolute;right:-1px;bottom:-3px}.code-tag{color:#816bff}.code-class{color:#ff63a5}.code-fnc{color:#09c2de}.nk-switch-icon{color:#90a1b8;height:1.5rem;width:1.5rem;display:flex;align-items:center;justify-content:center}.nk-switch-icon .icon{font-size:1.5rem}.nk-switch-icon .icon-sm{font-size:1.25rem}.nk-switch-icon:hover{color:#526484}.nk-switch-icon.active{color:#0fac81}.dark-switch{position:relative}.dark-switch:before,.dark-switch:after{position:absolute;content:"";transform:translateY(-50%);border-radius:1.5rem;display:block;top:50%}.dark-switch:before{right:0;width:3rem;height:1.5rem;background-color:#fff;border:#dbdfea solid 2px}.dark-switch:after{height:1rem;width:1rem;right:calc(2rem - 2px - .125rem);background-color:#dbdfea}.dark-switch.active:before{background-color:#0fac81;border-color:#0fac81}.dark-switch.active:after{right:calc(2px + .125rem);background-color:#fff}.is-scrollable{overflow:auto}.country-list{display:flex;flex-wrap:wrap}.country-list li{width:100%}.country-item{display:flex;align-items:center}.country-flag{width:1.25rem;margin-right:.75rem}.country-name{font-size:1rem;color:#526484}@media(min-width: 576px){.country-list li{width:50%}}@media(min-width: 992px){.country-list li{width:33.33%}}.collapsed .switch-text-normal{display:none}.switch-text-collapsed{display:none}.collapsed .switch-text-collapsed{display:inline-flex}.close{float:right;font-size:1.505rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover-focus{opacity:.75}button.close{padding:0;background-color:rgba(0,0,0,0);border:0}.popover-header{border-bottom:1px solid #eaeaea}.profile-ud-label{display:block;color:#8094ae}.plain .profile-ud-label{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.1em}.wider .profile-ud-label{display:inline-flex;letter-spacing:-0.01em;width:120px;flex-shrink:0}.profile-ud-value{color:#526484}.wider .profile-ud-value{text-align:right;font-weight:500;width:100%}.profile-ud.wider{display:flex;padding:.5rem 0}.profile-ud-item:nth-child(n+2) .profile-ud.plain{margin-top:1.25rem}@media(min-width: 768px){.profile-ud.wider{padding:.75rem 0}.profile-ud-list{display:flex;flex-wrap:wrap;margin:-0.25rem -3.25rem;max-width:960px}.profile-ud-item{width:50%;padding:0 3.25rem}.profile-ud-item:nth-child(2) .profile-ud.plain{margin-top:0}}.profile-stats .amount{font-size:1.125rem;font-weight:700}.profile-balance-group{display:flex;align-items:flex-end}.profile-balance-ck{position:relative;height:70px;margin-top:.5rem}.profile-balance-sub{font-size:.875rem;color:#8094ae}.profile-balance-subtitle{font-size:.75rem;margin-top:.5rem}.profile-balance-sub .icon{font-size:.75rem}.profile-balance-plus{position:absolute}.profile-balance-plus .icon{font-size:1rem;line-height:1.5rem}.profile-balance-plus~*{padding-left:24px}.profile-balance-amount .number{font-size:1.25rem;font-weight:700;color:#364a63;line-height:1.5rem;white-space:nowrap}.profile-balance-amount .number small,.profile-balance-amount .number .small{font-weight:400}.steps ul{display:flex}.steps ul li{flex-grow:1}.steps .current-info{display:none}.actions ul{display:flex;margin:-10px;padding-top:20px}.actions ul li{padding:10px}.actions ul li:first-child{order:1}.actions ul li a{display:inline-block;position:relative;color:#fff;font-weight:500;transition:all .4s ease;border-color:#0fac81;background:#0fac81;padding:.4375rem 1.125rem;font-size:0.8125rem;border-radius:4px;line-height:1.25rem}.actions ul li.disabled{display:none}.nk-wizard-head{display:none}.nk-wizard-simple .steps{margin-bottom:20px}.nk-wizard-simple .steps ul li{position:relative;padding-bottom:5px;padding-right:1rem;margin-bottom:.5rem}.nk-wizard-simple .steps ul li h5,.nk-wizard-simple .steps ul li .h5{border:none;padding:0 0 6px 0;letter-spacing:.02em;font-size:13px;text-transform:uppercase;font-weight:500;color:#8094ae}.nk-wizard-simple .steps ul li .number{font-size:13px;color:#8094ae;font-weight:700}.nk-wizard-simple .steps ul li:after{position:absolute;height:1px;width:100%;left:0;bottom:0;content:"";transition:all .4s;background:#e5e9f2}.nk-wizard-simple .steps ul li.done:after,.nk-wizard-simple .steps ul li.current:after{height:2px;background:#0fac81;width:100%}.nk-wizard-simple .steps ul li.done h5,.nk-wizard-simple .steps ul li.done .h5,.nk-wizard-simple .steps ul li.done .number,.nk-wizard-simple .steps ul li.current h5,.nk-wizard-simple .steps ul li.current .h5,.nk-wizard-simple .steps ul li.current .number{color:#0fac81}.nk-wizard-simple .steps ul li.current~.done:after{height:1px;background:#e5e9f2}.nk-wizard-simple .steps ul li.current~.done h5,.nk-wizard-simple .steps ul li.current~.done .h5,.nk-wizard-simple .steps ul li.current~.done .number{color:#8094ae}.nk-wizard-simple .steps .current-info{display:none}.nk-wizard.is-vertical .steps ul{flex-wrap:wrap}.nk-wizard.is-vertical .steps ul li h5,.nk-wizard.is-vertical .steps ul li .h5{text-transform:none}@media(min-width: 768px){.nk-wizard.is-vertical{display:flex;flex-wrap:wrap}.nk-wizard.is-vertical .steps{width:33%;padding-right:2rem}.nk-wizard.is-vertical .steps ul li{width:100%}.nk-wizard.is-vertical .steps ul li:not(:last-child){margin-bottom:1rem}.nk-wizard.is-vertical .content{width:66%}.nk-wizard.is-vertical .actions{margin-left:33%}}.tb-tnx-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;background:#f5f6fa}.tb-tnx-head td,.tb-tnx-head th{color:#8094ae;padding:.625rem .25rem}.tb-tnx-head th{border-radius:0}.tb-tnx-head th:first-child{border-top-left-radius:4px}.tb-tnx-head th:last-child{border-top-right-radius:4px}.tb-tnx-item{font-size:14px}.tb-tnx-item td{padding:1.25rem .25rem;vertical-align:middle}.is-compact .tb-tnx-item td{padding-top:.4rem;padding-bottom:.4rem}.tb-tnx-id a{display:block}.tb-tnx-id span{font-weight:500}.tb-tnx-item .tb-tnx-total{font-weight:500;color:#526484}.tb-tnx-desc{padding-right:.5rem}.tb-tnx-item .tb-tnx-date{color:#8094ae}.tb-tnx-item .tb-tnx-date .date{font-size:13px}.tb-tnx-action{width:60px;text-align:right}.tb-tnx-action .dropdown{margin-top:-0.25rem;margin-bottom:-0.25rem}.tb-tnx-btns .btn+.btn,.tb-tnx-btns .dual-listbox .dual-listbox__button+.btn,.dual-listbox .tb-tnx-btns .dual-listbox__button+.btn,.tb-tnx-btns .dual-listbox .btn+.dual-listbox__button,.dual-listbox .tb-tnx-btns .btn+.dual-listbox__button,.tb-tnx-btns .dual-listbox .dual-listbox__button+.dual-listbox__button,.dual-listbox .tb-tnx-btns .dual-listbox__button+.dual-listbox__button{margin-left:.5rem}.tb-tnx-btns+.dropdown{margin-left:1rem}@media(max-width: 767px){.tb-tnx-item,.tb-tnx-head{display:flex;width:100%}.tb-tnx-item th,.tb-tnx-head th{flex-grow:1;padding-top:.5rem;padding-bottom:.5rem}.tb-tnx-item td,.tb-tnx-head td{flex-grow:1;border:none;padding-top:0;padding-bottom:0}.tb-tnx-item{flex-wrap:wrap;padding-top:1rem;padding-bottom:1rem}.tb-tnx-item:not(:last-child){border-bottom:1px solid #e5e9f2}.tb-tnx-amount{width:110px;text-align:right}.tb-tnx-id,.tb-tnx-head th:first-child{min-width:85px;padding-right:.25rem !important;flex-grow:0 !important}.tb-tnx-info{width:45%}.tb-tnx-date .date{font-size:12px}.tb-tnx-date .date+.date{padding-left:.5rem}.tb-tnx-action:last-child{flex-grow:0;padding-left:.5rem;display:inline-flex;align-items:center}}@media(max-width: 575px){.tb-tnx-item{font-size:13px}.tb-tnx-id{width:100%}.tb-tnx-id+td{padding-left:1.25rem}.tb-tnx-info{width:65%}.tb-tnx-amount:last-child{width:25%}.tb-tnx-amount:not(:last-child){display:none}.tb-tnx-amount.is-alt{position:absolute;display:inline-flex;right:1.25rem;width:auto}.tb-tnx-amount.is-alt .tb-tnx-total{order:5;padding-left:1.25rem}}@media(min-width: 768px){.tb-tnx-desc,.tb-tnx-date,.tb-tnx-total,.tb-tnx-status{display:inline-block;vertical-align:middle}.tb-tnx-desc,.tb-tnx-date{width:calc(50% - 4px)}.tb-tnx-total{width:calc(60% - 4px)}.tb-tnx-status{width:calc(40% - 4px)}.tb-tnx-amount{width:25%}.tb-tnx-date .date,.tb-tnx-date>span>span{width:calc(50% - 4px);display:inline-block}.tb-tnx-date .date+.date,.tb-tnx-date>span>span+span{padding-left:.75rem}}.tb-odr-item{font-size:14px}.tb-odr-item td{padding:1rem .25rem;vertical-align:middle}.tb-odr-id,.tb-odr-total{display:block}.tb-odr-item .tb-odr-id,.tb-odr-item .tb-odr-total{font-weight:500}.tb-odr-id a{display:block}.tb-odr-id span{font-weight:500}.tb-odr-item .tb-odr-total{color:#364a63}.tb-odr-head .tb-odr-item .tb-odr-total{color:inherit}.tb-odr-item .tb-odr-date{color:#8094ae}.tb-odr-head .tb-odr-item .tb-odr-date{color:inherit}.tb-odr-action>div,.tb-odr-action>.btn,.dual-listbox .tb-odr-action>.dual-listbox__button{vertical-align:middle}.tb-odr-action:last-child{padding-left:1.25rem;text-align:right}.tb-odr-btns .btn+.btn,.tb-odr-btns .dual-listbox .dual-listbox__button+.btn,.dual-listbox .tb-odr-btns .dual-listbox__button+.btn,.tb-odr-btns .dual-listbox .btn+.dual-listbox__button,.dual-listbox .tb-odr-btns .btn+.dual-listbox__button,.tb-odr-btns .dual-listbox .dual-listbox__button+.dual-listbox__button,.dual-listbox .tb-odr-btns .dual-listbox__button+.dual-listbox__button{margin-left:.5rem}.tb-odr-id{min-width:90px}.tb-odr-head{background:#f5f6fa}.tb-odr-head th{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#8094ae;padding:.625rem .25rem}@media(max-width: 767px){.tb-odr-item th,.tb-odr-item td{flex-grow:1}.tb-odr-amount{text-align:right}}@media(max-width: 575px){.tb-odr-item{font-size:13px}.tb-odr-amount{width:24%}.tb-odr-info{width:44%}.tb-odr-action{width:2rem;min-width:auto}.tb-odr-item .tb-odr-action{padding-left:.5rem}}@media(min-width: 768px){.tb-odr-info{min-width:55%}.tb-odr-amount{width:30%}.tb-odr-total{min-width:100px}.tb-odr-id,.tb-odr-total{display:inline-block}.tb-odr-id+span,.tb-odr-total+span{padding-left:1rem}.tb-odr-btns+.dropdown,.tb-odr-btns+.btn,.dual-listbox .tb-odr-btns+.dual-listbox__button{margin-left:.75rem}}@media(min-width: 992px){.tb-odr-id{min-width:120px}.tb-odr-total{min-width:50%}}.is-compact .tb-tnx-item td,.is-compact .tb-odr-item td{padding-top:.4rem;padding-bottom:.4rem}@media(max-width: 767px){.is-compact .tb-tnx-item,.is-compact .tb-odr-item{padding-top:.5rem;padding-bottom:.5rem}.is-compact .tb-tnx-item td,.is-compact .tb-odr-item td{padding-top:0;padding-bottom:0}}.nk-tb-list{display:table;width:100%;font-size:13px;color:#8094ae}.nk-tb-list.is-alt{color:#526484}.nk-tb-list .list-status,.nk-tb-list .tb-status{font-size:12px;font-weight:500}.nk-tb-list .tb-lead,.nk-tb-list .tb-amount{font-weight:500;color:#364a63;display:block;line-height:1.4}.nk-tb-list .tb-lead-sub,.nk-tb-list .tb-amount-sub{color:#526484;display:block;line-height:1.4}.nk-tb-list .tb-sub,.nk-tb-list .tb-amount-sm{font-size:.9em}.nk-tb-list .tb-amount span,.nk-tb-list .tb-amount .currency{color:#526484;font-weight:400}.nk-tb-list .user-info .tb-lead+span,.nk-tb-list .tb-lead+.tb-date{font-size:11px}.nk-tb-list .tb-country{display:flex;align-items:center}.nk-tb-list .tb-country .name{color:#364a63}.nk-tb-list .tb-country .flag{height:16px;border-radius:3px}.nk-tb-list .tb-country .flag+.name{margin-left:.6875rem}.nk-tb-list .tb-product{display:flex;align-items:center}.nk-tb-list .tb-product .thumb{width:48px;border-radius:4px;margin-right:1rem}.nk-tb-list .tb-product .title{font-weight:700;font-size:.875rem;color:#364a63}.nk-tb-list .tb-asterisk{font-size:1.125rem;line-height:1;vertical-align:middle}.nk-tb-list .tb-asterisk a,.nk-tb-list .tb-asterisk .asterisk-on,.nk-tb-list .tb-asterisk a:hover,.nk-tb-list .tb-asterisk a.active{color:#0fac81}.nk-tb-item{transition:background-color .3s,box-shadow .3s;display:table-row}.nk-tb-item:not(.nk-tb-head):hover,.nk-tb-item:not(.nk-tb-head).seleted{background:#f8f9fc;box-shadow:0 0 10px -4px rgba(54,74,99,.2)}.nk-tb-col{position:relative;display:table-cell;vertical-align:middle;padding:1rem .5rem}.nk-tb-col:first-child{padding-left:1.25rem}.nk-tb-col:last-child{padding-right:1.25rem}.nk-tb-col-tools{max-width:3.75rem}.nk-tb-col-check{width:3rem}.nk-tb-col-check .custom-control{vertical-align:middle}.nk-tb-item:not(:last-child) .nk-tb-col{border-bottom:1px solid #dbdfea}.nk-tb-head .nk-tb-col{padding-top:.5rem;padding-bottom:.5rem;color:#8094ae;font-size:.9em;border-bottom:1px solid #dbdfea}.nk-tb-col-action{text-align:right}.nk-tb-col-action>.dropdown:last-child{right:-0.5rem}.nk-tb-col-nosort:before,.nk-tb-col-nosort:after{display:none !important}.nk-tb-actions{display:flex;align-items:center;justify-content:flex-end;position:relative}.nk-tb-ulist .nk-tb-actions,.nk-tb-actions-adj .nk-tb-actions{right:-0.5rem}.nk-tb-actions.visible1{width:1rem}.nk-tb-action-hidden{opacity:0;transition:.3s ease}.nk-tb-item:hover .nk-tb-action-hidden{opacity:1;background:#f8f9fc}.nk-tb-list .nk-tb-head .btn-trigger .icon{font-size:1.5em}.nk-tb-list.is-separate{margin-top:-8px;border-collapse:separate;border-spacing:0 8px}.nk-tb-list.is-separate .nk-tb-item>.nk-tb-col{background:#fff;border:none;box-shadow:0px 1px 3px 0px rgba(54,74,99,.05)}.nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:first-child{border-radius:4px 0 0 4px}.nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:last-child{border-radius:0 4px 4px 0}.nk-tb-list.is-separate .nk-tb-item:hover .nk-tb-action-hidden{background:#fff}.nk-tb-list.is-separate .nk-tb-head .nk-tb-col{padding-top:.75rem;padding-bottom:.75rem}@media(min-width: 576px){.nk-tb-col-check{width:3.25rem}.nk-tb-item .nk-tb-col:first-child{padding-left:1.5rem}.nk-tb-item .nk-tb-col:last-child{padding-right:1.5rem}}@media(min-width: 1540px){.nk-tb-list{font-size:14px}.nk-tb-list .list-status,.nk-tb-list .tb-status{font-size:13px}.nk-tb-list .user-info .tb-lead+span,.nk-tb-list .tb-lead+.tb-date{font-size:12px}}.is-loose .nk-tb-item:not(.nk-tb-head) .nk-tb-col{padding-top:1.125rem;padding-bottom:1.125rem}.is-medium .nk-tb-item:not(.nk-tb-head) .nk-tb-col{padding-top:.75rem;padding-bottom:.75rem}.is-compact .nk-tb-item:not(.nk-tb-head) .nk-tb-col{padding-top:.5rem;padding-bottom:.5rem}.nk-tnx-type{display:flex;align-items:center}.nk-tnx-type-icon{font-size:1.125rem;flex-shrink:0;height:2.5rem;width:2.5rem;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#e5e9f2;margin-right:1rem}@media(max-width: 991.98px){.nk-tb-tnx{font-size:12px;letter-spacing:-0.01em}.nk-tnx-type-icon{font-size:.875rem;height:1.75rem;width:1.75rem;margin-right:.75rem}}@media(max-width: 575.98px){.nk-tb-tnx .nk-tb-head .nk-tb-col-tools{opacity:0}.nk-tb-tnx .nk-tb-col-status{text-align:right;padding-right:1.25rem !important}.nk-tb-tnx .nk-tb-col-tools{position:absolute;right:0;opacity:0;transition:.3s ease}.nk-tb-tnx .nk-tb-item:hover .nk-tb-col-tools{opacity:1}.nk-tnx-type-icon{margin-right:.5rem}}@media(min-width: 768px){.nk-tb-tnx .nk-tb-col-status{padding-left:2.5rem}}@media(min-width: 1800px){.nk-tb-tnx .nk-tb-col-status{padding-left:6rem}}.timeline{color:#8094ae;line-height:1.3}.timeline+.timeline,.timeline-list+.timeline-head{margin-top:1.75rem}.timeline-head{font-size:14px;color:#8094ae;margin-bottom:1rem}.timeline-item{position:relative;display:flex;align-items:flex-start}.timeline-item:not(:last-child){padding-bottom:1.5rem}.timeline-item:not(:last-child):before{position:absolute;height:calc(100% - 11px);width:1px;background:#dbdfea;content:"";top:13px;left:5px}.timeline-status{position:relative;height:11px;width:11px;border-radius:50%;flex-shrink:0;margin-top:2px}.timeline-status.is-outline:after{position:absolute;height:7px;width:7px;border-radius:50%;background:#fff;content:"";top:2px;left:2px}.timeline-date{position:relative;color:#8094ae;width:90px;margin-left:.75rem;flex-shrink:0;line-height:1rem}.timeline-date .icon{vertical-align:middle;color:#8094ae;display:inline-block;position:absolute;margin-right:.25rem;right:0;top:2px}.timeline-data{padding-left:8px}.timeline-title{font-size:15px;color:#364a63;margin-bottom:.75rem}.timeline-des{color:#8094ae}.timeline-des p{margin-bottom:.25rem}.timeline .time{display:block;font-size:12px;color:#8094ae}@media(min-width: 576px){.timeline+.timeline,.timeline-list+.timeline-head{margin-top:2.5rem}}@media(max-width: 413px){.timeline-item{flex-wrap:wrap}.timeline-date{width:80px}.timeline-data{padding:.75rem 0 0 24px}}.nk-ecwg .amount{font-size:2rem;font-weight:500;color:#364a63}.nk-ecwg .amount-sm{font-size:1.5rem}.nk-ecwg .amount-xs{font-size:.875rem}.is-dark .nk-ecwg .amount{color:#fff}.nk-ecwg .info{font-size:.875rem}.is-dark .nk-ecwg .info{color:#abe2d3}.nk-ecwg .sub-title{font-size:.875rem;font-weight:500}.is-dark .nk-ecwg .sub-title{color:#fff}.nk-ecwg .data{margin-top:.5rem}.nk-ecwg .data:not(:last-child){margin-bottom:2rem}.nk-ecwg .data-group{display:flex;align-items:center;justify-content:space-between}.nk-ecwg .data-group .data{margin:0;padding-right:20px}.nk-ecwg1-ck{height:110px}.nk-ecwg2-ck{height:182px}.nk-ecwg3-ck{height:66px}.nk-ecwg4{display:flex;flex-direction:column}.nk-ecwg4-ck{height:180px;width:180px;margin-right:1.5rem}.nk-ecwg4-legends{flex-grow:1;padding:1rem 0}.nk-ecwg4-legends li{display:flex;justify-content:space-between;padding:.25rem 0}.nk-ecwg4-legends .title{display:flex;align-items:center}.nk-ecwg4-legends .title .dot{margin-right:.5rem}.nk-ecwg5-ck{height:140px}.nk-ecwg5 .data-group{margin-bottom:30px}.nk-ecwg6-ck{width:100px;height:40px;margin-left:20px}.nk-ecwg7-ck{height:180px;width:180px;margin:0 auto 15px}.nk-ecwg7-legends{display:flex;justify-content:center;flex-wrap:wrap}.nk-ecwg7-legends li{padding:.25rem 1rem}.nk-ecwg7-legends .title{display:flex;align-items:center;color:#8094ae}.nk-ecwg7-legends .title .dot{margin-right:.5rem}.nk-ecwg8-ck{height:200px}.nk-ecwg8-legends{display:flex;justify-content:center;flex-wrap:wrap;margin-bottom:1rem}.nk-ecwg8-legends li{padding:.25rem 1rem}.nk-ecwg8-legends .title{display:flex;align-items:center;color:#8094ae}.nk-ecwg8-legends .title .dot{margin-right:.5rem}@media(max-width: 490px){.nk-ecwg4 .data-group{flex-wrap:wrap}.nk-ecwg8-ck{height:140px}}@media(min-width: 1540px){.nk-ecwg4-ck{height:210px;width:210px;margin-right:2.5rem}}.nk-top-products .item{display:flex;align-items:center;padding:.625rem 0;line-height:1.2}.nk-top-products .thumb{width:44px;margin-right:1rem}.nk-top-products .thumb img{border-radius:4px}.nk-top-products .total{margin-left:auto;text-align:right}.nk-top-products .title,.nk-top-products .amount{font-size:.9375rem;color:#364a63;margin-bottom:.25rem}.nk-top-products .price,.nk-top-products .count{font-size:.8125rem;color:#8094ae;margin-bottom:1px}.nk-store-statistics .item{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0}.nk-store-statistics .title{font-size:.8125rem;color:#8094ae}.nk-store-statistics .count{font-size:1.25rem;color:#364a63;font-weight:700}.nk-store-statistics .icon{display:flex;align-items:center;justify-content:center;font-size:1.5rem;height:44px;width:44px;border-radius:6px}.nk-download{display:flex;width:100%;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:1.25rem;border-radius:4px;background:#fff}.nk-download .data{display:flex;flex-grow:1}.nk-download .info{margin-top:.35rem}.nk-download .title{font-size:1rem;line-height:1.2}.nk-download .thumb{flex-shrink:0;width:3rem;margin-right:1rem}.nk-download .meta .version,.nk-download .meta .release{display:block;line-height:1.2;padding:.25rem 0}.nk-download .title .badge{margin-left:1rem}@media(min-width: 768px){.nk-download{padding:1.5rem}.nk-download .thumb{width:2.5rem;margin-right:1.5rem}.nk-download .data{align-items:center}.nk-download .meta .version,.nk-download .meta .release{display:inline-block;padding-right:1.5rem}}@media(max-width: 575px){.nk-download .data{width:100%;padding-left:4rem}.nk-download .thumb{position:absolute;margin-left:-4rem}.nk-download .actions{margin:.75rem 0 0;padding-left:4rem}}.nk-add-product{top:0;background-color:#fff;width:400px;height:100%;padding:1.5rem}.nk-add-product+.toggle-overlay{z-index:901}.invoice{position:relative}.invoice-wrap{padding:1.25rem;border:1px solid #dbdfea;border-radius:4px;background:#fff}.invoice-action{position:absolute;right:1.25rem;top:1.25rem}.invoice-brand{padding-bottom:1.5rem}.invoice-brand img{max-height:60px}.invoice-bills{font-size:12px}.invoice-bills .table{min-width:580px}.invoice-bills .table th{color:#0fac81;font-size:12px;text-transform:uppercase;border-top:0}.invoice-bills .table th:last-child,.invoice-bills .table td:last-child{text-align:right}.invoice-bills .table tfoot{border-top:1px solid #dbdfea}.invoice-bills .table tfoot td{border-top:0;white-space:nowrap;padding-top:.25rem;padding-bottom:.25rem}.invoice-bills .table tfoot tr:last-child td:not(:first-child),.invoice-bills .table tfoot tr:first-child td:not(:first-child){font-weight:500;padding-top:1.25rem;padding-bottom:.25rem}.invoice-bills .table tfoot tr:last-child td:not(:first-child){border-top:1px solid #dbdfea;padding-top:.25rem;padding-bottom:.25rem}.invoice-head{padding-bottom:1.5rem;display:flex;justify-content:space-between;flex-direction:column}.invoice-desc{width:210px;padding-top:1.5rem}.invoice-desc .title{text-transform:uppercase;color:#0fac81}.invoice-desc ul li{padding:.25rem 0}.invoice-desc ul span{font-size:13px;font-weight:500;color:#526484}.invoice-desc ul span:first-child{min-width:90px;display:inline-block;text-transform:uppercase;letter-spacing:1px;color:#8094ae}.invoice-desc ul span:last-child{padding-left:.75rem}.invoice-contact .title{margin-bottom:1rem}.invoice-contact ul li{padding:.5rem 0;line-height:1.3}.invoice-contact ul li:first-child{padding-top:0}.invoice-contact ul li:last-child{padding-bottom:0}.invoice-contact ul .icon{line-height:1.3;font-size:1.1em;display:inline-block;vertical-align:top;margin-top:-2px;color:#0fac81;margin-right:.5rem}.invoice-contact ul .icon+span{display:inline-block;vertical-align:top;color:#8094ae}.invoice-print{max-width:940px;margin:2rem auto}.invoice-print .invoice-wrap{padding:0;border:none !important}@media(min-width: 768px){.invoice-wrap{padding:3rem}.invoice-head{flex-direction:row}.invoice-desc{padding-top:0}.invoice-bills{font-size:.875rem}}.pricing{position:relative;height:100%}.pricing-badge{position:absolute;right:.5rem;top:.5rem}.pricing-head{text-align:center;padding:1.75rem 1.5rem;border-bottom:1px solid #e5e9f2}.pricing-title{max-width:100% !important}.pricing-title .title{margin-bottom:.25rem}.pricing-title:not(:last-child){padding-bottom:1.25rem}.pricing-body{padding:1.75rem 1.75rem 2rem}.pricing-features li{display:flex;padding:.25rem 0}.pricing-action{margin-top:1.5rem;text-align:center}.pricing-media{padding:.25rem 0;margin-bottom:1.5rem}.pricing-media img{max-width:90px}.pricing-amount{font-size:.875rem;color:#8094ae}.pricing-amount .amount{font-size:1.5rem;font-weight:700;color:#526484}.nk-add-product{top:65px;background-color:#fff;width:400px;height:calc(100vh - 65px);padding:1.5rem}.nk-add-product+.toggle-overlay{z-index:700}.rating{display:flex;align-items:center;margin:0 -0.125rem;color:#f4bd0e}.rating>*{padding:0 .125rem}.rating .icon{font-size:1rem}.product-card{overflow:hidden;height:100%}.product-thumb{position:relative}.product-badges{position:absolute;top:1rem;left:1rem;display:flex;flex-wrap:wrap;margin:-0.25rem}.product-badges>li{padding:.25rem}.product-tags{display:flex;flex-wrap:wrap;justify-content:center}.product-tags>li{padding:.25rem}.product-tags a{color:#8094ae}.product-tags a:hover{color:#0fac81}.product-tags+.product-title{margin-top:.5rem}.product-title a{color:#364a63}.product-title+.product-price{margin-top:1rem}.product-actions{position:absolute;bottom:.25rem;left:50%;transform:translateX(-50%);border-radius:4px 4px 0 0;overflow:hidden;transition:.2s linear;display:flex;opacity:0}.product-card:hover .product-actions{opacity:1}.product-actions li{padding:0 .125rem}.product-actions li a{display:inline-flex;align-items:center;justify-content:center;color:#526484;font-size:15.6px;height:2.125rem;width:2.125rem;transition:.3s ease}.product-actions li a:hover{color:#0fac81}.product-gallery{position:relative;height:auto;margin:0 0 30px 0;border-radius:4px;border:1px solid #e5e9f2}.product-gallery .slick-list{padding-left:0 !important;padding-right:0 !important}.product-gallery .slider-nav{position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);width:282px}.product-gallery .slider-nav .slider-item{padding:0 8px}.product-gallery .slider-nav .slider-item .thumb{width:78px;padding:1px;border:2px solid #e5e9f2;box-shadow:inset 1px 1px 0 #fff,inset -1px -1px 0 #fff,inset 1px -1px 0 #fff,inset -1px 1px 0 #fff;border-radius:4px;transition:all .3s ease;cursor:pointer}.product-gallery .slider-nav .slider-item.slick-current .thumb{border-color:#0fac81;cursor:default}.product-rating{display:flex;align-items:center}.product-rating .amount{margin-left:.5rem;color:#8094ae}.product-excrept{margin-top:1.5rem}.product-meta{margin-top:2rem}.product-meta+.product-meta{margin-top:1.25rem}@media(max-width: 420px){.product-gallery .slider-nav{width:188px}}@media(min-width: 768px){.product-gallery .slider-nav{width:384px}}@media(min-width: 1540px){.product-gallery .slider-nav{width:470px}}.gallery-image{position:relative;z-index:1}.nk-order-ovwg-ck{height:180px}.nk-order-ovwg-data{padding:.75rem 1.25rem 1.25rem;border:2px solid rgba(0,0,0,0);border-radius:4px}.nk-order-ovwg-data .amount{font-size:1.5rem;font-weight:700}.nk-order-ovwg-data .amount small,.nk-order-ovwg-data .amount .small{font-weight:400}.nk-order-ovwg-data .info{font-size:12px;color:#8094ae;margin-bottom:.25rem}.nk-order-ovwg-data .info strong{color:#364a63}.nk-order-ovwg-data .title{font-size:14px;line-height:1.3;color:#8094ae;font-weight:500}.nk-order-ovwg-data .title .icon{font-size:1rem;height:28px;width:28px;border-radius:50%;background:#f5f6fa;display:inline-flex;align-items:center;justify-content:center;margin-right:.5rem}.nk-order-ovwg-data.buy{border-color:#8ff0d6}.nk-order-ovwg-data.buy .amount,.nk-order-ovwg-data.buy .title .icon{color:#1ee0ac}.nk-order-ovwg-data.sell{border-color:#87d6c0}.nk-order-ovwg-data.sell .amount,.nk-order-ovwg-data.sell .title .icon{color:#0fac81}@media(min-width: 1540px){.nk-order-ovwg-ck{height:260px}}.nk-wg-action{display:flex;align-items:center;justify-content:space-between}.nk-wg-action-content{position:relative;padding-left:2rem;padding-right:1rem}.nk-wg-action-content .icon{font-size:1.5rem;left:0;position:absolute;color:#8094ae}.nk-wg-action-content .title{font-size:14px;font-weight:500;padding-bottom:.25rem}.nk-wg-action-content p{color:#8094ae;font-size:13px;line-height:1.25rem}.nk-wg-action-content p strong{color:#0fac81}.nk-coin-ovwg{display:flex}.nk-coin-ovwg-ck{flex-grow:1;height:165px}.nk-coin-ovwg-legends{width:100px;flex-shrink:0}.nk-coin-ovwg-legends li{display:flex;align-items:center;line-height:1.25rem;font-size:12px;padding:.25rem 0;color:#8094ae}.nk-coin-ovwg-legends li .dot{margin-right:.5rem}.nk-tb-orders-type{width:66px}.nk-sale-data{flex-shrink:0}.nk-sale-data-group{display:flex;flex-wrap:wrap}.nk-sale-data .amount{display:block;font-size:1.75rem;color:#364a63}.nk-sale-data .amount .change{font-size:.875rem}.nk-sale-data .amount.sm{font-size:1.125rem;color:#8094ae}.nk-sale-data .sub-title{color:#8094ae;font-size:12px}.nk-sale-data .sub-title .change{margin-right:.5rem}.nk-sales-ck{height:80px;flex-grow:1}.nk-sales-ck.large{height:200px}@media(min-width: 992px)and (max-width: 1539.98px){.nk-sales-ck.sales-revenue{height:164px}}.nk-activity-item{display:flex;align-items:center;padding:1.25rem}.nk-activity-item:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-activity-data{margin-left:1rem}.nk-activity-data .time{display:block;font-size:12px;color:#8094ae;line-height:1.3}@media(min-width: 576px){.nk-activity-item{display:flex;padding:1rem 1.5rem}}.nk-support-item{display:flex;padding:1.25rem}.nk-support-item:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-support-content{flex-grow:1;margin-left:1rem}.nk-support-content .title{font-size:.875rem;font-weight:700;color:#364a63;display:flex;justify-content:space-between;align-items:center}.nk-support-content p{margin-bottom:0;margin-top:.25rem}.nk-support-content .time{display:block;font-size:12px;color:#8094ae}@media(min-width: 576px){.nk-support-item{display:flex;padding:1.25rem 1.5rem}}.device-status{display:flex;flex-direction:column;padding-top:1rem}.device-status-ck{height:200px;margin:auto 0}.device-status-group{display:flex;justify-content:space-between;padding-top:1.75rem;margin:auto;width:280px;max-width:100%}.device-status-data>.icon{font-size:1.5rem}.device-status-data .title{font-size:12px;color:#8094ae;margin-bottom:.5rem}.device-status-data .amount{font-size:1.125rem;color:#364a63;font-weight:500}.device-status-data .change{margin-left:-0.125rem}.traffic-channel{margin-top:1rem}.traffic-channel-ck{height:44px;width:130px;margin-top:-4px;margin-bottom:-4px}.traffic-channel-doughnut-ck{height:160px}.traffic-channel-group{display:flex;flex-wrap:wrap;padding-top:1.75rem;margin-left:auto !important;margin-right:auto !important;width:320px;max-width:100%}.traffic-channel-data{width:50%}.traffic-channel-data .title{display:flex;align-items:center;color:#8094ae;font-size:12px}.traffic-channel-data .title .dot{margin-right:.5rem}.traffic-channel-data .amount{font-size:1.125rem;color:#364a63;margin-left:1.25rem}.traffic-channel-data .amount small,.traffic-channel-data .amount .small{font-size:12px;color:#8094ae}@media(max-width: 575.98px){.traffic-channel-ck{width:100%}.traffic-channel-table .nk-tb-item{display:flex;flex-wrap:wrap;border-bottom:1px solid #e5e9f2;padding:1.125rem 0}.traffic-channel-table .nk-tb-col{border-bottom:none !important;padding-top:0 !important;padding-bottom:0 !important}.traffic-channel-table .nk-tb-channel{width:50%}.traffic-channel-table .nk-tb-sessions{width:25%}.traffic-channel-table .nk-tb-prev-sessions{display:none}.traffic-channel-table .nk-tb-change{width:25%}.traffic-channel-table .nk-tb-trend{width:100%;padding-left:1.25rem}}@media(min-width: 1540px)and (max-width: 1800px){.traffic-channel-data .amount{font-size:1rem}}.analytic-data-group{display:flex;flex-wrap:wrap}.analytic-data .title{font-size:12px;font-weight:500;color:#8094ae;margin-bottom:.375rem}.analytic-data .title span{font-weight:400}.analytic-data .amount{color:#364a63;font-size:1.5rem;line-height:1.2;margin-bottom:.25rem}.analytic-data .amount-sm{font-size:1.125rem}.analytic-data .change{font-size:13px;margin-left:-0.125rem}.analytic-data .subtitle{font-size:12px;color:#8094ae}@media(min-width: 1540px)and (max-width: 1800px){.analytic-data .amount{font-size:1.25rem;line-height:1.75rem}.analytic-data .amount-sm{font-size:1.125rem}}.analytic-ov-data{width:50%}.analytic-ov-ck{height:175px;margin-top:2rem}@media(min-width: 480px){.analytic-ov-data{width:25%}}.analytic-au-data{width:33.3333%}.analytic-au-ck{height:170px;margin-top:2.25rem}.analytic-wp-data{display:flex;justify-content:space-between;align-items:flex-end}.analytic-wp-ck{height:36px}.analytic-wp-graph{width:150px;margin-top:.125rem;margin-bottom:.125rem}.analytic-wp-graph .title{margin-bottom:0}.analytic-wp-text{text-align:right;margin-left:.5rem}@media(min-width: 420px)and (max-width: 767px){.analytic-wp-graph{width:60%}}@media(min-width: 1540px)and (max-width: 1800px){.analytic-wp-graph{width:120px}}.chart-label{font-size:12px;color:#8094ae}.chart-label-group{margin-top:.5rem;display:flex;justify-content:space-between}.analytics-map .vector-map{height:160px;margin:1rem 0}.analytics-map-data{font-size:.875rem}.analytics-map-data td{padding:.25rem 0}.analytics-map-data .country{color:#8094ae}.analytics-map-data .amount{color:#364a63;text-align:right}.analytics-map-data .percent{text-align:right;color:#8094ae}.analytics-map-data-list{width:100%;margin-bottom:-0.25rem}.card-title .subtitle{color:#8094ae;font-size:13px;font-weight:500}.card-amount{display:flex;align-items:baseline}.card-amount .change{margin-left:.5rem}.card-amount .amount{font-size:1.5rem;color:#364a63}.card-amount .amount span{color:#526484}@media(min-width: 768px)and (max-width: 991.98px){.card-amount .amount{font-size:1rem;font-weight:500}.card-amount .amount span{font-weight:400}.card-amount .change{font-size:12px}}.card-inner .nav-tabs-card{margin-left:-1.25rem;margin-right:-1.25rem}@media(min-width: 576px){.card-inner .nav-tabs-card{margin-left:-1.5rem;margin-right:-1.5rem}}.nav-tabs-xs .nav-link{padding:.75rem 0;font-size:13px;font-weight:500}@media(min-width: 768px){.nav-tabs-xs .nav-item{padding-right:1.25rem}}@media(min-width: 992px){.nav-tabs-sm .nav-item{padding-right:1.25rem}}@media(min-width: 1200px){.nav-tabs-sm .nav-item{padding-right:1.25rem}}.invest-data{display:flex;align-items:flex-end;justify-content:space-between}.invest-data-history{margin-right:20px;flex-grow:1}.invest-data-history .title{font-size:11px;color:#8094ae;text-transform:uppercase;margin-bottom:.125rem;letter-spacing:.1em}.invest-data-history .amount{font-size:.9375rem;line-height:1.1;color:#364a63}.invest-data-history .amount span{color:#526484}.invest-data-amount{display:flex;flex-shrink:0;flex-grow:1}.invest-data-ck{flex-grow:1;height:48px;width:80px;margin-bottom:.125rem}@media(min-width: 768px)and (max-width: 1350px),(max-width: 359px){.invest-data{margin-top:.75rem}.invest-data-amount{flex-wrap:wrap;flex-shrink:1}.invest-data-ck{height:68px;width:140px}}@media(min-width: 768px)and (max-width: 991.98px){.invest-data-history .amount{font-size:.75rem;font-weight:700}.invest-data-history .amount span{font-weight:400}}.invest-ov{padding:1.25rem 0 1rem}.invest-ov:last-child{padding-bottom:0}.invest-ov:not(:last-child){border-bottom:1px solid #e5e9f2}.invest-ov .subtitle{color:#8094ae;font-size:13px;font-weight:500;margin-bottom:.25rem}.invest-ov .title{font-size:11px;color:#8094ae;text-transform:uppercase;margin-top:.25rem;letter-spacing:.1em}.invest-ov .amount{font-size:1.25rem;line-height:1.1;color:#364a63}.invest-ov .amount span{color:#526484}.invest-ov-details{display:flex}.invest-ov-info{width:60%}.invest-ov-stats{width:40%}.invest-ov-stats>div{display:flex;align-items:baseline}.invest-ov-stats .change{margin-left:.25rem}.invest-top-ck{padding-top:20px;height:70px}.asterisk a{position:relative;color:#8094ae;display:inline-flex}.asterisk a:hover,.asterisk a.active{color:#ffa353}.asterisk a:hover .asterisk-on,.asterisk a.active .asterisk-on{opacity:1}.asterisk a.active:hover .asterisk-on{opacity:0}.asterisk-on{opacity:0;position:absolute;left:0;color:#ffa353;z-index:1;transition:opacity .2s}.nk-reply{height:100%;max-height:100%;overflow:auto}.nk-reply-item{padding:2rem 1.25rem}.nk-reply-item+.nk-reply-item{padding-top:0}.nk-reply-item>div:not(.nk-reply-header){margin-left:48px}.nk-reply-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.nk-reply-header .user-name{margin-left:1rem;font-size:.875rem}.nk-reply-header .user-name span{color:#8094ae;font-weight:400}.nk-reply-header .date-time{color:#8094ae;font-size:12px}.nk-reply-entry.note{background:#f5f6fa;padding:1.25rem;border-radius:4px}.nk-reply-from{margin-top:1.25rem;padding:.375rem .75rem;background:#f5f6fa;border-radius:4px;display:inline-block;font-size:13px}.nk-reply-meta{overflow:hidden;text-align:center;margin:0 1.25rem;padding:0 2rem}.nk-reply-meta-info{position:relative;display:inline-block;padding:0 .75rem;color:#8094ae;font-size:13px;line-height:1.4}.nk-reply-meta-info span,.nk-reply-meta-info strong,.nk-reply-meta-info .who{color:#526484}.nk-reply-meta-info .whom{color:#0fac81}.nk-reply-meta-info:before,.nk-reply-meta-info:after{position:absolute;height:1px;background:#e5e9f2;content:"";width:100vw;top:50%}.nk-reply-meta-info:before{right:100%}.nk-reply-meta-info:after{left:100%}.nk-reply-form{border-top:1px solid #e5e9f2}.nk-reply-form-dropdown{margin-left:-0.5rem;margin-right:.75rem}.nk-reply-form-header{display:flex;align-items:center;justify-content:space-between;padding:0 1.25rem;border-bottom:1px solid #e5e9f2}.nk-reply-form-title{display:flex;align-items:center}.nk-reply-form-title .title{color:#8094ae;margin-right:.75rem}.nk-reply-form-field{padding:.5rem 1.25rem}.nk-reply-form-field:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-reply-form-field .form-control,.nk-reply-form-field div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .nk-reply-form-field input,.nk-reply-form-field .dual-listbox .dual-listbox__search,.dual-listbox .nk-reply-form-field .dual-listbox__search{font-size:.875rem}.nk-reply-form-field textarea.form-control,.nk-reply-form-field .dual-listbox textarea.dual-listbox__search,.dual-listbox .nk-reply-form-field textarea.dual-listbox__search{min-height:78px}.nk-reply-form-field textarea.form-control.ex-large,.nk-reply-form-field .dual-listbox textarea.ex-large.dual-listbox__search,.dual-listbox .nk-reply-form-field textarea.ex-large.dual-listbox__search{min-height:160px}.nk-reply-form-field+.nk-reply-form-tools{border-top:0}.nk-reply-form-tools{padding:1.25rem;border-top:1px solid #e5e9f2;display:flex;justify-content:space-between}.nk-reply-form-actions{display:inline-flex;align-items:center}.nk-reply-form-options{display:inline-flex}.nk-reply-form-input{display:flex}.nk-reply-form-input .label{margin:.3rem .5rem .3rem 0;width:1.25rem;color:#8094ae}.nk-reply-form-input-group{width:100%}.nk-reply-form-input-cc,.nk-reply-form-input-bcc{display:none}.nk-reply-form-input-cc.expanded,.nk-reply-form-input-bcc.expanded{display:flex}.nk-reply-form-input .toggle-opt{display:inline-flex;align-items:center;color:#364a63}.nk-reply-form-input .toggle-opt:hover{color:#0fac81}.nk-reply-form-group{position:relative;padding:1rem 0;flex-grow:1;display:flex;align-items:flex-start}.nk-reply-form-input-to{padding-right:3.5rem}.nk-reply-form-nav{position:absolute;display:flex;align-items:center;align-self:flex-start;padding:1.0625rem 0 0;right:0;top:0;margin:0 -0.375rem}.nk-reply-form-nav li a{font-size:12px;color:#8094ae;display:block;line-height:1.5rem;padding:.25rem .375rem}.nk-reply-form-nav li a:hover{color:#0fac81}.is-collapsed .nk-reply-msg-info{display:none}.nk-reply-msg-excerpt{color:#526484;display:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.is-collapsed .nk-reply-msg-excerpt{display:block}.nk-reply-msg-meta{padding:.75rem}.nk-reply-msg-meta li{display:flex;line-height:1.125rem;padding:.1875rem 0}.nk-reply-msg-meta li .label{width:75px;color:#8094ae;font-size:12px;text-align:right;margin-right:.75rem}.nk-reply-msg-meta li .info{font-size:13px}.nk-reply-msg-meta li .info a{color:#526484}.nk-reply-tools{display:flex;align-items:center;flex-shrink:0;cursor:default}.nk-reply-tools .date{margin-right:1rem;line-height:2.25rem;color:#526484}.nk-reply-tools .attach-msg{font-size:1.25rem;margin-right:.375rem}.nk-reply-desc{display:flex;flex-grow:1}.is-collapsed .nk-reply-desc{overflow:hidden}.nk-reply-header .nk-reply-desc{align-items:center}.nk-reply-info{margin-left:1rem;max-width:calc(100% - 4.5rem)}.nk-reply-header.is-collapsed{margin-bottom:0}.nk-reply-header:not(.is-opened){cursor:pointer}.is-collapsed+.nk-reply-body{display:none}.nk-reply-quick-btns ul{display:flex;align-items:center}.is-collapsed .prev-msg,.is-collapsed .next-msg,.is-collapsed .more-actions,.is-collapsed .replyto-msg,.is-collapsed .forwardto-msg{display:none}.input-mail{width:100%;border:none}@media(max-width: 767.98px){.nk-reply-tools{flex-wrap:wrap}.nk-reply-tools .date{margin-right:.5rem;font-size:13px}.nk-reply-tools .attach-msg{font-size:1.25rem;margin-right:.375rem}}@media(max-width: 575.98px){.nk-reply-info{margin-left:.75rem;max-width:calc(100% - 2.5rem)}.is-collapsed .nk-reply-info{max-width:calc(100% - 4.5rem)}.nk-reply-info .date{font-size:11px;color:#8094ae;margin-left:.375rem}.nk-reply-info .lead-text{font-size:13px}.nk-reply-form-dropdown{margin-right:.5rem}.nk-reply-form-group{flex-wrap:wrap;align-items:center}.nk-reply-form-title{font-weight:500}.nk-reply-tools .attach-msg,.nk-reply-tools .date-msg{display:none}.nk-reply-avatar{height:30px;width:30px}.nk-reply-msg-excerpt{font-size:12px;margin-top:.25rem}.nk-reply-msg-info .sub-text{font-size:12px}.nk-reply-msg-info .dropdown-menu{margin-right:16px !important}}@media(min-width: 576px){.nk-reply-form{margin:.5rem 2.25rem 2.25rem;border:1px solid #e5e9f2;border-radius:4px}.nk-reply-form-header{padding:0 1.5rem}.nk-reply-form-field{padding:.5rem 1.5rem}.nk-reply-form-field textarea.form-control.ex-large,.nk-reply-form-field .dual-listbox textarea.ex-large.dual-listbox__search,.dual-listbox .nk-reply-form-field textarea.ex-large.dual-listbox__search{min-height:278px}.nk-reply-form-tools{padding:1rem 1.5rem}.modal-body .nk-reply-form-tools{padding:1.5rem}.nk-reply-item{padding:2rem 2.25rem}.nk-reply-meta{margin:0 2.25rem}.nk-reply-header .date-time{font-size:13px}.nk-reply-quick-btns{margin:.5rem 2.25rem 2.25rem}}@media(min-width: 992px){.nk-reply-form{margin:.5rem 2.5rem 2.5rem}.nk-reply-item{padding:2rem 2.5rem}.nk-reply-meta{margin:0 2.5rem}.nk-reply-quick-btns{margin:.5rem 2.5rem 2.5rem}}.attach-files{margin-top:1.75rem;border:1px solid #e5e9f2;border-radius:4px}.attach-list{padding:1rem 1.25rem;margin-bottom:-0.5rem;display:flex;flex-wrap:wrap}.attach-item{width:180px;padding-right:2rem;padding-bottom:.5rem}.attach-item a{display:flex;align-items:center;width:100%;color:#526484}.attach-item .icon{font-size:1.5rem;color:#0fac81;margin-right:.75rem}.attach-foot{border-top:1px solid #e5e9f2;background:#f5f6fa;padding:.75rem 1.25rem;display:flex;flex-wrap:wrap;justify-content:space-between}.attach-info{font-weight:500;color:#364a63}.attach-download span{color:#8094ae;transition:all .3s}.attach-download:hover span{color:#0fac81}@media(max-width: 359px){.attach-info{font-size:12px}.attach-download{font-size:12px}}.nk-msg-nav{position:relative;border-bottom:1px solid #e5e9f2;padding:0 1.25rem;background:#f5f6fa;z-index:2}.nk-msg-nav .search-wrap{padding:0 1rem;bottom:-1px;border-bottom:1px solid #e5e9f2}.nk-msg-nav .search-submit{transform:translate(0.25rem, -50%)}.nk-msg-menu{display:flex;margin:0 -0.75rem}.nk-msg-menu-item{padding:0 .75rem}.nk-msg-menu-item a{display:inline-flex;position:relative;color:#8094ae;font-weight:500;font-size:.875rem;line-height:1.5rem;padding:1rem 0}.nk-msg-menu-item a:after{position:absolute;content:"";height:2px;background:#0fac81;bottom:-1px;left:0;right:0;opacity:0;transition:.3s ease}.nk-msg-menu-item a .icon{font-size:1.125rem;line-height:1.5rem}.nk-msg-menu-item a:hover{color:#0fac81}.nk-msg-menu-item.active a{color:#0fac81}.nk-msg-menu-item.active a:after{opacity:1}.nk-msg{position:relative;display:flex;overflow:hidden}.nk-msg-aside{background:#f5f6fa;width:100%;overflow:hidden;max-height:calc(100vh - (65px + 96px));position:relative;display:flex;flex-direction:column;flex-shrink:0;border:1px solid #e5e9f2;border-radius:4px}.nk-msg-list{max-height:100%;height:100%;overflow:auto}.nk-msg-item{display:flex;padding:1.25rem 1.25rem;cursor:pointer}.nk-msg-item:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-msg-item.active,.nk-msg-item.current{background:#fff;cursor:default}.nk-msg-info{max-width:calc(100% - 52px);margin-left:.75rem;flex-grow:1}.nk-msg-from{display:flex;justify-content:space-between;align-items:center}.nk-msg-context{display:flex;justify-content:space-between;margin-top:.25rem}.nk-msg-context .asterisk{margin-top:auto}.nk-msg-sender{display:inline-flex;align-items:center;color:#8094ae;font-size:12px}.nk-msg-sender .name{margin-right:.5rem}.is-unread .nk-msg-sender .name{font-weight:500;color:#364a63}.nk-msg-meta{display:inline-flex;align-items:center;color:#8094ae;font-size:12px}.nk-msg-meta .attchment .icon{font-size:1.125rem}.nk-msg-meta .date{margin-left:.75rem}.nk-msg-text{max-width:calc(100% - 35px);flex-grow:0;padding-right:.5rem}.nk-msg-text .title{font-size:15px;margin-bottom:.25rem}.nk-msg-text p{font-size:13px;color:#8094ae;max-height:42px;overflow:hidden}.is-unread .nk-msg-text p{color:#526484;font-weight:500}.nk-msg-lables{text-align:center;margin:-0.125rem;display:inline-flex;flex-direction:column}.nk-msg-lables>div{padding:.125rem}.nk-msg-lables .icon{font-size:1.125rem}.nk-msg-lables .badge{line-height:14px;font-size:10px;padding:0 .25rem}.nk-msg-body{position:fixed;top:0;left:0;right:0;bottom:0;flex-grow:1;display:flex;flex-direction:column;overflow:hidden;transition:padding .3s ease-in-out;opacity:0;pointer-events:none;z-index:5;border:1px solid #e5e9f2;border-radius:4px}.nk-msg-body.show-message{opacity:1;pointer-events:auto;z-index:2999}.nk-msg-profile{position:absolute;top:0;right:0;transform:translateX(100%);width:280px;height:100%;max-height:100%;transition:transform .3s ease-in-out;background:#fff;z-index:100}.nk-msg-profile .card{border:none;box-shadow:none !important}.nk-msg-profile-toggle{position:absolute;height:36px;width:36px;display:none;align-items:center;justify-content:center;bottom:-18px;right:-18px;margin-right:40px;transition:right .3s ease-in-out,margin .3s ease-in-out .2s;border:1px solid #e5e9f2;background-color:#fff;border-radius:50%;font-size:1.125rem;z-index:2;color:#8094ae;z-index:110}.nk-msg-profile-toggle.active{margin-right:0;transform:rotate(-180deg)}.nk-msg-profile-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(16,25,36,.4);z-index:600;z-index:90;animation:overlay-fade-in .4s ease 1}.nk-msg-profile.visible{transform:none}.nk-msg-head{position:relative;padding:.75rem 1.25rem;border-bottom:1px solid #e5e9f2}.nk-msg-head .title{margin-bottom:.5rem}.nk-msg-head-meta{display:flex;justify-content:space-between;align-items:center}.nk-msg-hide{font-size:1rem}.nk-msg-tags{margin:0 -0.75rem}.nk-msg-tags li{padding:0 .75rem;color:#8094ae}.nk-msg-tags li>span{display:inline-flex;align-items:center}.nk-msg-tags li>span .icon{color:#0fac81;margin-right:.25rem}.nk-msg-actions{display:flex;margin:0 -0.25rem}.nk-msg-actions li{padding:0 .25rem}@media(min-width: 576px){.nk-msg-nav{padding:0 2rem}.nk-msg-nav .search-wrap{padding:0 1.7rem}.nk-msg-item{padding:1.25rem 2rem}.nk-msg-head{padding:1rem 2.25rem}.nk-msg-head .title{margin-bottom:1rem}.nk-msg-aside{max-height:calc(100vh - (65px + 108px))}}@media(min-width: 576px)and (max-width: 991.98px){.nk-msg-text .title{margin-top:.125rem;margin-bottom:.375rem}}@media(min-width: 768px){.nk-msg-aside{max-height:calc(100vh - (65px + 112px))}}@media(min-width: 992px){.nk-msg-nav{padding:0 1.75rem}.nk-msg-nav .search-wrap{padding:0 1.425rem}.nk-msg-item{padding:1.25rem 1.75rem}.nk-msg-head{padding:2rem 2.5rem}.nk-msg-head .title{max-height:82px;overflow:hidden}.nk-msg-aside{width:320px;border-right:1px solid #e5e9f2;margin-right:1.5rem}.nk-msg-body{position:relative;opacity:1;pointer-events:auto;max-height:calc(100vh - (65px + 112px))}.nk-msg-profile{border-left:1px solid #e5e9f2}.nk-msg-profile-toggle{margin-right:55px;display:flex}}@media(min-width: 1540px){.nk-msg-aside{width:380px}}@media(max-width: 1539.98px){.profile-shown .nk-msg-profile-toggle{right:262px}.has-apps-sidebar .profile-shown .nk-msg-profile-toggle{right:-18px}}@media(max-width: 1279px){.has-apps-sidebar .profile-shown .nk-msg-profile-toggle{right:262px}}@media(min-width: 1540px){.nk-msg-body.profile-shown{padding-right:280px}}@media(min-width: 1280px){.has-apps-sidebar .nk-msg-body.profile-shown{padding-right:280px}}.ibx-count{position:relative;padding:.3125rem .75rem;font-size:.75rem;color:#8094ae;background:#fff;border:1px solid #e5e9f2;display:inline-block;font-weight:400;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:3px}.ibx-count:before,.ibx-count:after{position:absolute;height:0;width:0;top:50%;transform:translateY(-50%);content:"";border-style:solid}.ibx-count:before{right:-8px;border-width:4px 0 4px 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #e5e9f2}.ibx-count:after{right:-6px;border-width:3px 0 3px 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #fff}.nk-ibx-context{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.nk-ibx-context-group{display:flex;align-items:center}.nk-ibx-context-badges{margin-right:.75rem}.nk-ibx-context-text{display:inline;color:#8094ae}.is-unread .nk-ibx-context-text{color:#526484}.nk-ibx-context-text .heading{color:#364a63}.is-unread .nk-ibx-context-text .heading{font-weight:500}.ibx-actions{position:relative;display:inline-block;transition:background-color .3s}.ibx-actions-hidden{position:absolute;display:flex;right:calc(100% + 8px);opacity:0;transition:background-color .3s}.nk-ibx-item:hover .ibx-actions-hidden{opacity:1;background-color:#f5f6fa}.nk-ibx-item:hover .ibx-actions{background-color:#f5f6fa}.nk-ibx{position:relative;display:flex;align-items:flex-start;border-radius:4px}.nk-ibx-aside{position:fixed;top:0;left:0;transform:translateX(-100%);background:#fff;width:230px;overflow:hidden;height:100%;display:flex;flex-direction:column;align-items:stretch;flex-shrink:0;border:1px solid #e5e9f2;z-index:799;transition:transform .4s linear}.nk-ibx-aside.content-active{transform:none}.nk-ibx-aside .simplebar-content{height:100%;display:flex;flex-direction:column}.nk-ibx-aside.content-active{z-index:901}.nk-ibx-nav{overflow:auto;flex-grow:1;height:100%;max-width:100%;padding-bottom:1rem}.nk-ibx-nav-head{display:flex;align-items:center;justify-content:space-between;padding:2rem 1.5rem .75rem}.nk-ibx-nav-head .title{font-size:1rem;margin-bottom:0}.nk-ibx-nav-head .dropdown>a,.nk-ibx-nav-head>.link{color:#8094ae;font-size:.875rem}.nk-ibx-head{position:relative;display:flex;align-items:center;justify-content:space-between;padding:.75rem;border-bottom:1px solid #e5e9f2;min-height:61px}.nk-ibx-head .title{font-size:1rem;margin-bottom:0}.nk-ibx-head-actions,.nk-ibx-head-tools{display:flex;align-items:center}.nk-ibx-head-tools .btn-icon.btn-trigger .icon,.nk-ibx-head-tools .dt-buttons .btn-trigger.btn-secondary .icon,.dt-buttons .nk-ibx-head-tools .btn-trigger.btn-secondary .icon{font-size:1.25rem}.nk-ibx-head .search-wrap{padding:0 1.365rem 0 1rem}.nk-ibx-head .search-wrap .icon{font-size:1.25rem}.nk-ibx-head .search-back{transform:translate(-0.5rem, -50%)}.nk-ibx-head-check{display:flex;margin-right:.325rem}.nk-ibx-action{position:relative;padding:1rem 1.5rem;border-bottom:1px solid #e5e9f2}.nk-ibx-action-list{display:flex;justify-content:space-between;align-items:center}.nk-ibx-action-item a{display:flex;align-items:center}.nk-ibx-action-item .icon{font-size:1.5rem}.nk-ibx-action-item .icon+span{margin-left:.5rem}.nk-ibx-action-item .search-toggle .icon{font-size:1.125rem}.nk-ibx-menu li{margin:2px 0}.nk-ibx-menu li:hover{background:#f5f6fa;border-radius:3px}.nk-ibx-menu li.active{background:#e2f5f0;border-radius:3px}.nk-ibx-menu-item{position:relative;display:flex;align-items:center;padding:.5rem .75rem;border-radius:4px}.nk-ibx-menu-item .icon{font-size:1.25rem;line-height:1.5rem;width:2rem;color:#8094ae}.nk-ibx-menu-item .badge{margin-left:auto;min-width:2.25rem;justify-content:center}.active .nk-ibx-menu-item .icon{color:#0fac81}.nk-ibx-menu-text{font-size:.875rem;color:#526484;font-weight:500;line-height:1.5rem}.active .nk-ibx-menu-text{color:#0fac81}.nk-ibx-label>li,.nk-ibx-contact>li{position:relative;display:flex;align-items:center;border-radius:4px;margin:2px 0;transition:background-color .3s}.nk-ibx-label>li>a,.nk-ibx-contact>li>a{display:flex;padding:.5rem .75rem;flex-grow:1}.nk-ibx-label>li .dropdown,.nk-ibx-contact>li .dropdown{opacity:0}.nk-ibx-label>li .dropdown>a,.nk-ibx-contact>li .dropdown>a{color:#526484;padding:.6875rem}.nk-ibx-label>li:hover,.nk-ibx-contact>li:hover{background:#f5f6fa}.nk-ibx-label>li:hover .dropdown,.nk-ibx-contact>li:hover .dropdown{opacity:1}.nk-ibx-label>li.active,.nk-ibx-contact>li.active{background:#abe2d3}.nk-ibx-label-text{line-height:1;margin-left:1rem;font-size:.875rem;color:#526484;font-weight:500}.nk-ibx-menu,.nk-ibx-label,.nk-ibx-contact{padding-left:.75rem;padding-right:.75rem}.nk-ibx-menu{padding-top:.75rem}.nk-ibx-contact{padding-bottom:1.75rem}.nk-ibx-status{background:#f5f6fa;padding:1.5rem 1.5rem;margin-top:auto}.nk-ibx-status-info{margin-bottom:.5rem}.nk-ibx-status-info .icon{width:1.25rem;display:inline-block}.nk-ibx-body{position:relative;display:flex;flex-direction:column;overflow:hidden;flex-grow:1;flex-shrink:1;border:1px solid #dbdfea;border-radius:4px}.nk-ibx-list{display:flex;flex-direction:column;max-height:100%;height:100%;overflow:auto;min-height:280px}.nk-ibx-item{position:relative;display:flex;align-items:center;background:#fff;padding:1rem 1.25rem;transition:background-color .3s;cursor:pointer}.nk-ibx-item:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-ibx-item:not(.no-hover):hover,.nk-ibx-item.active{background:#f5f6fa}.nk-ibx-item.is-unread{background:rgba(245,246,250,.6)}.nk-ibx-item-elem{padding:0 8px;flex-shrink:0}.nk-ibx-item-elem:first-child{padding-left:0}.nk-ibx-item-check{width:28px;display:inline-flex}.nk-ibx-item-fluid{flex-grow:1;flex-shrink:1;width:100%;max-width:100%;overflow:hidden}.nk-ibx-item-user .user-name{max-width:calc(100% - 50px)}.nk-ibx-item-user .user-name .lead-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400}.is-unread .nk-ibx-item-user .user-name .lead-text{font-weight:500}.nk-ibx-item-count{width:3.25rem}.nk-ibx-item-time{width:80px;text-align:right}.nk-ibx-item-attach{width:2.25rem;text-align:center}.nk-ibx-item-star .asterisk{padding:0 .25rem}.nk-ibx-item-star .asterisk a{display:flex}.nk-ibx-item-star .asterisk .icon{line-height:1;font-size:1.125rem}.nk-ibx-item-tools{padding-right:0;margin-left:auto;text-align:right}.nk-ibx-item-check,.nk-ibx-item-star,.nk-ibx-item-attach{position:relative;z-index:2}.nk-ibx-item-tools{position:relative}.nk-ibx-link{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1}.nk-ibx-link+.nk-ibx-item-elem{padding-left:0}.nk-ibx-view{background:#fff;display:flex;flex-direction:column}.nk-ibx-reply-head{padding:1.5rem 1.25rem 0;display:flex;align-items:flex-start;justify-content:space-between}.nk-ibx-reply-head .title{margin-bottom:.75rem}.nk-ibx-reply-header{margin-right:-0.5rem}.nk-ibx-reply-item{position:relative}.nk-ibx-reply-item>div:not(.nk-reply-header){margin-left:0;margin-top:1.25rem;margin-bottom:.75rem}.nk-ibx-reply-item:not(:last-child):after{position:absolute;left:1.25rem;right:1.25rem;height:1px;bottom:1rem;content:"";background:#e5e9f2}@media(min-width: 576px){.nk-ibx-item,.nk-ibx-head{padding-left:2.25rem;padding-right:2.25rem}.nk-ibx-head .search-wrap{padding:0 2.375rem 0 2rem}.nk-ibx-reply-head{padding:2em 2.25rem 0}.nk-ibx-reply-item{padding-bottom:2.75rem}.nk-ibx-reply-item>div:not(.nk-reply-header){margin-left:56px}.nk-ibx-reply-item:not(:last-child):after{bottom:1.375rem;left:2.25rem;right:2.25rem}.nk-ibx-reply-quick-btns,.nk-ibx-reply-form{margin-left:5.75rem}}@media(min-width: 768px){.nk-ibx-item-user{width:180px}}@media(min-width: 992px){.nk-ibx-aside{position:static;transform:none;transition:none;height:auto;margin-right:1.5rem;border-radius:4px}.nk-ibx-menu,.nk-ibx-label,.nk-ibx-contact{padding-left:1rem;padding-right:1rem}.nk-ibx-menu{padding-top:1rem}.nk-ibx-contact{padding-bottom:1rem}.nk-ibx-nav-head{padding-left:1.75rem;padding-right:1.75rem}.nk-ibx-item,.nk-ibx-head{padding-left:1.75rem;padding-right:1.75rem}.nk-ibx-aside .nk-ibx-head{padding-left:1rem;padding-right:1rem}.nk-ibx-head .search-wrap{padding:0 2.25rem 0 1.5rem}.nk-ibx-body{max-width:calc(100% - 230px)}.nk-ibx-reply-quick-btns,.nk-ibx-reply-form{margin-left:5.25rem}.nk-ibx-reply-item,.nk-ibx-reply-head{padding-left:1.75rem;padding-right:1.75rem}}@media(min-width: 1200px){.nk-ibx-aside{width:230px}.nk-ibx-item-user{width:200px}.nk-ibx-item-time{margin-right:5rem}}@media(min-width: 1540px){.nk-ibx-item-user{width:260px}.nk-ibx-item-tools{margin-left:5rem}}@media(max-width: 1199.98px){.nk-ibx-item-attach{display:none}}@media(max-width: 767.98px){.nk-ibx-item{flex-wrap:wrap}.nk-ibx-item-elem{padding:0 4px}.nk-ibx-item-fluid{padding-left:32px;padding-right:48px;margin-top:6px;width:calc(100% - 2.5rem)}.nk-ibx-item-fluid .heading{display:block}.nk-ibx-item-count,.nk-ibx-item-attach{display:none}.nk-ibx-item-user{flex-grow:1}.nk-ibx-item-user .user-avatar{height:28px;width:28px;font-size:12px}.nk-ibx-item-time{position:absolute;right:32px;top:19px}.nk-ibx-item-tools{position:absolute;text-align:right;right:28px;bottom:18px}.nk-ibx-item-star{position:absolute;left:28px;top:50px}.nk-ibx-context-badges{display:none}.ibx-actions-hidden{display:none}}@media(max-width: 575.98px){.nk-ibx-item-star{left:12px}.nk-ibx-item-time{right:12px}.nk-ibx-item-tools{right:8px}.nk-ibx-reply-head .title{font-size:1.125rem}.nk-ibx-reply .btn-icon.btn-trigger,.nk-ibx-reply .dt-buttons .btn-trigger.btn-secondary,.dt-buttons .nk-ibx-reply .btn-trigger.btn-secondary{padding-top:.3125rem;padding-bottom:.3125rem}.nk-ibx-reply .btn-icon.btn-trigger .icon,.nk-ibx-reply .dt-buttons .btn-trigger.btn-secondary .icon,.dt-buttons .nk-ibx-reply .btn-trigger.btn-secondary .icon{width:1.875rem}}@media(max-width: 359px){.nk-ibx-head .btn-icon.btn-trigger,.nk-ibx-head .dt-buttons .btn-trigger.btn-secondary,.dt-buttons .nk-ibx-head .btn-trigger.btn-secondary{padding-top:.3125rem;padding-bottom:.3125rem}.nk-ibx-head .btn-icon.btn-trigger .icon,.nk-ibx-head .dt-buttons .btn-trigger.btn-secondary .icon,.dt-buttons .nk-ibx-head .btn-trigger.btn-secondary .icon{width:1.875rem}}@media(min-width: 576px)and (max-width: 991.98px){.nk-ibx-aside{width:320px}.nk-ibx-menu,.nk-ibx-label,.nk-ibx-contact{padding-left:1.5rem;padding-right:1.5rem}.nk-ibx-nav-head{padding-left:2.25rem;padding-right:2.25rem}}.nk-fmg{position:relative}.nk-fmg-aside{position:fixed;width:265px;overflow:hidden;height:100%;max-height:100%;border:1px solid #e5e9f2;background:#fff;flex-shrink:0;z-index:799;transform:translateX(-100%);left:0;top:0;transition:transform .4s linear;min-height:100vh;max-height:100vh;overflow-y:auto}.nk-fmg-aside.content-active{transform:none;z-index:901}.nk-fmg-aside .simplebar-content{height:100%}.nk-fmg-aside-wrap{height:100%;display:flex;flex-direction:column}.nk-fmg-aside-top{margin-bottom:auto}.nk-fmg-actions{padding:1.25rem 1rem 0}.nk-fmg-menu{padding:1rem}.nk-fmg-menu li{margin:2px 0}.nk-fmg-menu-item{position:relative;display:flex;align-items:center;padding:.5rem .75rem;border-radius:4px}.nk-fmg-menu-item:hover{background:#f5f6fa;border-radius:3px}.active>.nk-fmg-menu-item{background:#e2f5f0;border-radius:3px}.nk-fmg-menu-item .icon{font-size:1.25rem;line-height:1.25rem;margin-top:-2px;width:2rem;color:#8094ae}.nk-fmg-menu-item .badge{margin-left:auto;min-width:2.25rem}.active>.nk-fmg-menu-item .icon{color:#0fac81}.nk-fmg-menu-text{font-size:.875rem;color:#526484;font-weight:500;line-height:1.5rem}.active>.nk-fmg-menu-item>.nk-fmg-menu-text{color:#0fac81}.nk-fmg-menu li ul{margin-top:-0.125rem;margin-bottom:.5rem;padding-left:2.75rem}.nk-fmg-menu li ul ul{padding-left:.75rem;border-left:1px solid #e5e9f2}.nk-fmg-menu li ul .nk-fmg-menu-item{padding:.125rem 0}.nk-fmg-menu li ul .nk-fmg-menu-item:hover,.nk-fmg-menu li ul .nk-fmg-menu-item.active{background:rgba(0,0,0,0)}.nk-fmg-menu li ul .nk-fmg-menu-item:hover span,.nk-fmg-menu li ul .nk-fmg-menu-item.active span{color:#0fac81}.nk-fmg-menu li ul .nk-fmg-menu-text{font-size:90%;line-height:1.375rem}.nk-fmg-status{padding:1.75rem}.nk-fmg-status-title{font-size:.875rem;display:flex;align-items:center;color:#526484;margin-bottom:1rem}.nk-fmg-status-title .icon{font-size:1.25rem;margin-right:.75rem}.nk-fmg-status-info{font-size:12px;font-weight:500;color:#8094ae;margin-top:1rem}.nk-fmg-body{display:flex;flex-direction:column;max-height:100%;border-radius:4px;background-color:#fff;border:1px solid #dbdfea;flex-grow:1}.nk-fmg-body-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:.75rem 1.25rem;border-bottom:1px solid #dbdfea;position:sticky;top:65px;z-index:9}.nk-fmg-body-content{padding:1.125rem 1.25rem;height:100%;max-height:100%;overflow:auto}.nk-fmg-body .simplebar-content{min-height:470px}.nk-fmg-search{display:flex;align-items:center;flex-grow:1}.nk-fmg-filter{margin-bottom:1.25rem}.nk-fmg-filter .form-label{font-weight:500;font-size:13px;color:#8094ae}.nk-fmg-filter .form-group{margin-bottom:1rem}.nk-fmg-switch{background-color:#e5e9f2;border-top:1px solid #e5e9f2}.nk-fmg-switch>div{width:100%}.nk-fmg-switch .dropdown-toggle{padding:1.25rem 1.75rem;width:100%;flex-direction:column;align-items:flex-start}.nk-fmg-switch .dropdown-toggle:after{position:absolute;right:1.5rem;top:50%;transform:translateY(-50%);font-size:1rem;color:#526484}.nk-fmg-listing{min-height:380px}.nk-fmg-listing.is-scrollable{min-height:auto;max-height:298px}@media(min-width: 576px){.nk-fmg-body-content{padding-top:1.25rem;padding-bottom:1.25rem}}@media(min-width: 992px){.nk-fmg{display:flex}.nk-fmg-aside{transform:translateX(0);transition:none;width:265px;position:static;margin-right:1.5rem;min-height:auto;max-height:none;border-radius:4px}.nk-fmg-body-head{padding:.75rem 1.75rem;z-index:9}.nk-fmg-body-content{padding:1.75rem}}@media(min-width: 1200px){.nk-fmg-filter.toggle-expand-content{display:block !important}}@media(min-width: 576px)and (max-width: 991.98px){.nk-fmg-aside{width:320px}.nk-fmg-body-head,.nk-fmg-body-content,.nk-fmg-status,.nk-fmg-switch .dropdown-toggle{padding-left:2.25rem;padding-right:2.25rem}.nk-fmg-actions{padding:1.25rem 1.75rem 0}.nk-fmg-menu{padding:1rem 1.75rem}}.nk-file .tb-sub{font-size:12px;color:#8094ae}.nk-file .tb-head{font-weight:500;font-size:13px;color:#8094ae}.nk-file-info:hover .nk-file-name .asterisk a,.nk-file-info .nk-file-name .asterisk a.active{opacity:1}.nk-file-icon{margin-right:6px;flex-shrink:0}.nk-file-icon-link{display:block;text-decoration:none;color:inherit}.nk-file-icon-type{width:32px;display:inline-block;text-decoration:none;color:inherit;margin:auto}.nk-file-title{display:flex;align-items:center}.nk-file-title .breadcrumb{padding-top:.25rem;padding-bottom:0}.nk-file-name{font-weight:500;color:#364a63;position:relative;line-height:1.4}.nk-file-name-text{padding-right:1.375rem;display:inline-block}.nk-file-name-text .title{transition:color .3s;display:inline-block;text-decoration:none;word-break:break-word}.nk-file-name-text a.title{color:#364a63}.nk-file-name-text a.title:hover{color:#0fac81}.nk-file-name-sub{font-size:12px;color:#8094ae}.nk-file-name .asterisk{position:absolute;display:inline-flex;margin-left:6px;transition:.3s opacity;margin-top:-1px;top:50%;transform:translateY(-50%)}.nk-file-name .asterisk a{opacity:0}.nk-file-name .asterisk .icon{font-size:1.125rem;color:#0fac81}.nk-file-desc{display:flex;align-items:center;margin:0 -0.375rem}.nk-file-desc li{position:relative;padding:0 .375rem;font-size:12px;color:#8094ae}.nk-file-desc li:not(:first-child):before{content:"";font-family:"Nioicon";position:absolute;top:50%;left:0;transform:translate(-50%, -50%);font-size:11px;line-height:10px;opacity:.8}.nk-file-link{text-decoration:none;color:inherit;display:block}.nk-file-link:hover .title{color:#0fac81}.nk-file-info>.nk-file-link{padding:.75rem 0}.is-compact .nk-file-info>.nk-file-link{padding:.375rem 0}.nk-file-share-header{display:flex;align-items:center;justify-content:space-between;padding:0 1.25rem;border-bottom:1px solid #e5e9f2}.nk-file-share-field{padding:.5rem 1.25rem}.nk-file-share-field:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-file-share-field .form-control,.nk-file-share-field div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .nk-file-share-field input,.nk-file-share-field .dual-listbox .dual-listbox__search,.dual-listbox .nk-file-share-field .dual-listbox__search{font-size:.875rem}.nk-file-share-field textarea.form-control,.nk-file-share-field .dual-listbox textarea.dual-listbox__search,.dual-listbox .nk-file-share-field textarea.dual-listbox__search{min-height:78px}.nk-file-share-field textarea.form-control.ex-large,.nk-file-share-field .dual-listbox textarea.ex-large.dual-listbox__search,.dual-listbox .nk-file-share-field textarea.ex-large.dual-listbox__search{min-height:160px}.nk-file-share-input{display:flex}.nk-file-share-input .label{margin:.3rem .5rem .3rem 0;width:1.25rem;color:#8094ae}.nk-file-share-input-group{width:100%}.nk-file-share-group{position:relative;padding:1rem 0;flex-grow:1;display:flex;align-items:center}.nk-file-share-nav{flex-shrink:0}.nk-file-details-row{display:flex;flex-wrap:wrap;padding:.25rem 0}.nk-file-details-col{font-size:13px}.nk-file-details-col:first-child{color:#8094ae;width:100%}.nk-file-details-col:last-child{color:#526484}.nk-file-details-col .breadcrumb{padding:0}@media(min-width: 420px){.nk-file-details-row{flex-wrap:nowrap;padding:.375rem 0}.nk-file-details-col:first-child{width:100px;flex-shrink:0}}@media(min-width: 576px){.nk-file-share-field textarea.form-control.ex-large,.nk-file-share-field .dual-listbox textarea.ex-large.dual-listbox__search,.dual-listbox .nk-file-share-field textarea.ex-large.dual-listbox__search{min-height:278px}}.nk-files .nk-file .hideable{opacity:0;transition:opacity .3s}.nk-files .nk-file:hover .hideable{opacity:1}.nk-files .nk-file-item{display:table-row}.nk-files .nk-file-item>div{position:relative;display:table-cell;padding:.5rem;vertical-align:middle}.nk-files .nk-file-actions{width:60px;text-align:center}.nk-files-head{display:table-header-group}.nk-files-head .nk-file-item>div{font-weight:500;font-size:.8125rem;padding:.25rem}.nk-files-head .nk-file-item>div:first-child{padding-left:0}.nk-files-head .nk-file-item>div:last-child{padding-right:.5rem}.nk-files-head .dropdown-menu-xs{min-width:140px;max-width:140px}.nk-files-list{display:table-row-group}.nk-files-view-list{display:table;width:100%}.nk-files-view-list .nk-file{display:table-row}.nk-files-view-list .nk-file.selected{background:#cfeee6}.nk-files-view-list .nk-file.selected>div{background:rgba(0,0,0,0)}.nk-files-view-list .nk-file>div{padding:.5rem .375rem;border-bottom:1px solid #dbdfea;height:4rem;background-color:#fff}.nk-files-view-list .nk-file>div:first-child{border-left:1px solid #dbdfea;padding-left:1.25rem}.nk-files-view-list .nk-file>div:last-child{border-right:1px solid #dbdfea}.nk-files-view-list .nk-file>div.nk-file-info{padding-top:.125rem;padding-bottom:.125rem}.nk-files-view-list .nk-file:first-child>div{border-top:1px solid #dbdfea}.nk-files-view-list .nk-file:first-child>div:first-child{border-top-left-radius:4px}.nk-files-view-list .nk-file:first-child>div:last-child{border-top-right-radius:4px}.nk-files-view-list .nk-file:last-child>div:first-child{border-bottom-left-radius:4px}.nk-files-view-list .nk-file:last-child>div:last-child{border-bottom-right-radius:4px}.nk-files-view-list .nk-file .custom-checkbox{margin-right:1rem}.nk-files-view-list .nk-file-members .tb-shared{position:absolute;left:-1rem;top:50%;transform:translateY(-50%);font-size:1rem}.nk-files-view-list .nk-file-name-text a.title{padding:1rem 0 .875rem}.nk-files-view-list .nk-file-icon+.nk-file-name a.title{padding-left:40px;margin-left:-40px}.nk-files-view-list.is-compact .nk-file>div{height:3rem}.nk-files-view-grid .nk-files-head,.nk-files-view-group .nk-files-head{margin-bottom:.25rem;width:100%;display:flex}.nk-files-view-grid .nk-files-head .nk-file-item,.nk-files-view-group .nk-files-head .nk-file-item{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0}.nk-files-view-grid .nk-files-head .nk-file-item>div:not(.nk-file-info):not(.nk-file-actions),.nk-files-view-group .nk-files-head .nk-file-item>div:not(.nk-file-info):not(.nk-file-actions){display:none}.nk-files-view-grid .nk-files-head .nk-file-actions,.nk-files-view-group .nk-files-head .nk-file-actions{width:30px;padding:0 !important;margin-right:-4px}.nk-files-view-grid .nk-files-list,.nk-files-view-group .nk-files-list{display:flex;flex-wrap:wrap;margin:-8px}.nk-files-view-grid .nk-files-list .nk-file-actions,.nk-files-view-group .nk-files-list .nk-file-actions{position:absolute;border:0 none;background:rgba(0,0,0,0);width:46px;right:4px;top:10px}.nk-files-view-grid .nk-files-list .custom-control,.nk-files-view-group .nk-files-list .custom-control{position:absolute}.nk-files-view-grid .nk-file,.nk-files-view-group .nk-file{display:flex;position:relative;margin:8px;background:#fff;border:1px solid #dbdfea;border-radius:4px}.nk-files-view-grid .nk-file .nk-file-members,.nk-files-view-group .nk-file .nk-file-members{display:none}.nk-files-view-grid .nk-file{display:block;position:relative;width:calc(50% - 16px);text-align:center;padding:.5rem .25rem}.nk-files-view-grid .nk-file>div{display:block;padding:0}.nk-files-view-grid .nk-file-title{display:flex;flex-direction:column}.nk-files-view-grid .nk-file-icon{display:block;margin:0;width:100%}.nk-files-view-grid .nk-file-icon-type{width:72px;padding:.5rem 0}.nk-files-view-grid .nk-file-name .title{padding:.5rem .125rem .5rem}.nk-files-view-grid .nk-file-name-text{padding-left:1.5rem;padding-right:1.5rem}.nk-files-view-grid .nk-file-desc{padding:0 .25rem .75rem;margin-top:-0.125rem;justify-content:center}.nk-files-view-grid .nk-file-desc .members{display:none}.nk-files-view-grid .nk-file-info>.nk-file-link{padding:.5rem 0}.nk-files-view-grid .nk-file .nk-file-members{display:none}.nk-files-view-grid .nk-file .nk-file-meta{padding-bottom:.5rem}.nk-files-view-grid .nk-file .custom-control{top:.75rem;left:1rem}.nk-files-view-group .nk-file{position:relative;padding:.5rem .5rem;width:100%}.nk-files-view-group .nk-file>div{display:block;width:100%;padding-right:2rem}.nk-files-view-group .nk-file-desc{padding:.25rem .125rem 0}.nk-files-view-group .nk-file-name-text a.title{padding:.125rem 0}.nk-files-view-group .nk-file-icon+.nk-file-name a.title{padding-left:40px;margin-left:-40px}.nk-files-view-group .nk-file .nk-file-actions{right:2px;top:4px}.nk-files-view-group .nk-file .custom-control{right:.5rem;bottom:.5rem}.nk-files-view-group .nk-file .nk-file-meta{display:none}.nk-files-group>.title{border-top:1px solid #e5e9f2;font-size:12px;letter-spacing:.04em;text-transform:uppercase;padding:1rem 0;margin:0}.nk-files-group+.nk-files-group{margin-top:3rem}@media(max-width: 767.98px){.nk-file-name-text{font-size:13px}.nk-files-view-grid .nk-file-name-text{font-size:12px}}@media(max-width: 991.98px){.nk-fmg-body .nk-block-tools .btn-icon.btn-trigger .icon,.nk-fmg-body .nk-block-tools .dt-buttons .btn-trigger.btn-secondary .icon,.dt-buttons .nk-fmg-body .nk-block-tools .btn-trigger.btn-secondary .icon{font-size:1.25rem}}@media(min-width: 576px){.nk-files-view-grid .nk-file{width:calc(33.33% - 16px)}.nk-files-view-group .nk-file{width:calc(50% - 16px)}}@media(min-width: 1200px){.nk-files-view-grid .nk-file{width:calc(33.33% - 16px)}.nk-files-view-group .nk-file{width:calc(50% - 16px)}}@media(min-width: 1440px){.nk-files-view-grid .nk-file{width:calc(25% - 16px)}.nk-files-view-group .nk-file{width:calc(33.33% - 16px)}}@media(min-width: 1540px){.nk-files-view-grid .nk-file{width:calc(20% - 16px)}.nk-files-view-group .nk-file{width:calc(25% - 16px)}}@media(min-width: 1800px){.nk-files-view-grid .nk-file{width:calc(16.66% - 16px)}.nk-files-view-group .nk-file{width:calc(20% - 16px)}}@media(max-width: 1199px)and (min-width: 992px),(max-width: 767px){.nk-files-view-list .nk-file-members,.nk-files-view-list .nk-file-size{display:none !important}}@media(max-width: 599px){.nk-files-view-list .nk-file-icon-type{width:24px}.nk-files-view-list .nk-file-meta,.nk-files-view-list .nk-file-date,.nk-files-view-list .nk-file-size{display:none !important}.nk-files-view-list .nk-file .custom-checkbox{margin-right:.75rem}}.nk-upload-form{margin-bottom:2.25rem}.nk-upload-list>.title{font-size:.875rem;padding-bottom:1rem}.nk-upload-item{display:flex;align-items:center;padding:.5rem;border-radius:4px;border:1px solid #e5e9f2;margin:.5rem 0}.nk-upload-icon{width:48px;margin-right:.25rem;flex-shrink:0}.nk-upload-info{font-weight:500;color:#364a63;flex-grow:1;padding-right:.75rem}.nk-upload-title{display:flex;align-items:flex-end}.nk-upload-title .title{font-size:.875rem}.nk-upload-title .meta{font-size:12px;margin-left:auto;color:#8094ae;font-weight:400}.nk-upload-size{font-size:12px;color:#8094ae;font-weight:400}.nk-upload-progress{margin:.375rem 0 .25rem}.nk-upload-action{margin-left:auto}.add-opt:hover .sub-text,.add-opt:hover .icon{color:#0fac81}.add-opt-icon .icon-circle,.contacts-add-link .icon-circle,.chat-members-link .icon-circle,.chat-option-link .icon-circle{height:32px;width:32px;font-size:1rem}.add-opt-icon .icon+span,.contacts-add-link .icon+span,.chat-members-link .icon+span,.chat-option-link .icon+span,.add-opt-icon .icon+div,.contacts-add-link .icon+div,.chat-members-link .icon+div,.chat-option-link .icon+div{margin-left:.75rem}.chat-item{position:relative;border-radius:4px;transition:background-color .3s}.chat-item:hover{background-color:#ebeef2}.chats-dropdown .chat-item:hover{background-color:#f5f6fa}.chat-item:hover .chat-actions{opacity:1;pointer-events:initial;transition:opacity .5s}.chat-item.current{background-color:#f5f6fa}.chat-item.current:hover{background-color:#ebeef2}.chat-link{display:flex;align-items:center;width:100%;padding:.75rem;cursor:pointer}.chat-media{height:44px;width:44px}.chat-media+.chat-info{margin-left:1rem}.chat-info{width:calc(100% - 3.75rem)}.chat-from{display:flex;align-items:center;justify-content:space-between}.chat-from .name{font-size:.9375rem;margin-bottom:0;font-weight:500;color:#526484}.is-unread .chat-from .name{font-weight:700;color:#364a63}.chat-from .time{font-size:12px;color:#8094ae}.chat-context{display:flex;align-items:center;justify-content:space-between}.chat-context .text{width:calc(100% - 2.5rem);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:13px;color:#8094ae}.is-unread .chat-context .text{font-weight:500;color:#526484}.chat-context .status{display:flex;color:rgba(128,148,174,.8)}.is-unread .chat-context .status{color:#0fac81}.chat-context .status.seen{color:#0fac81}.chat-actions{background-color:#ebeef2;position:absolute;top:0;bottom:0;right:.75rem;opacity:0;pointer-events:none;z-index:2;display:flex;align-items:center;justify-content:flex-end;width:3rem}.chat-profile-group{border-top:1px solid #e5e9f2;padding:.25rem 0}.chat-profile-head{padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.chat-profile-head .title{margin-bottom:0}.chat-profile-head .indicator-icon{display:inline-flex}.chat-profile-head.collapsed .indicator-icon{transform:rotate(-180deg)}.chat-profile-body-inner{padding:0 1.5rem 1.5rem}.chat-profile-options{margin:-0.25rem}.chat-profile-options li{padding:.25rem}.chat-profile-settings{margin:-0.5rem}.chat-profile-settings li{padding:.5rem}.chat-profile-settings .custom-control-sm .custom-control-label{padding-left:.25rem;font-size:13px;font-weight:500;color:#526484}.chat-profile-media{display:flex;margin:0 -0.25rem}.chat-profile-media li{width:33.33%;padding:.25rem}.chat-profile-media li a{display:inline-block}.chat-profile-media li img{border-radius:4px}.chat-option-link{display:flex;align-items:center}.chat-option-link .lead-text{font-weight:500;font-size:13px;transition:color .3s;color:#526484}.chat-option-link:hover .lead-text{color:#1c2b46}.chat-members{margin:-0.375rem -0.5rem}.chat-members li{position:relative}.chat-members-link{display:flex;align-items:center;padding:.375rem .5rem}.chat-members .user-card{position:relative;padding:.375rem .5rem;border-radius:3px;transition:background-color .3s}.chat-members .user-card>a{width:100%;display:flex;align-items:center}.chat-members .user-card:hover{background-color:#ebeef2}.chat-members .user-card:hover .user-actions{opacity:1;pointer-events:initial;transition:opacity .5s}.chat-members .user-role{margin-left:auto;font-size:12px;color:#8094ae}.chat-members .user-actions{position:absolute;top:0;right:.25rem;bottom:0;width:3rem;background-color:#ebeef2;display:flex;align-items:center;justify-content:flex-end;opacity:0;pointer-events:none}.chat{display:flex;align-items:flex-end;margin:-4px}.chat>div{padding:4px}.chat+.chat{padding-top:.5rem}.chat-avatar{margin-bottom:1.4rem}.chat-avatar.no-meta{margin-bottom:0}.chat-bubble{display:flex;align-items:center;padding:.125rem 0}.chat-bubble:hover .chat-msg-more{opacity:1}.chat-bubbles .attach-files{margin-top:.75rem}.chat-msg{background-color:#fff;border-radius:8px;padding:.5rem 1rem}.chat-msg-more{display:flex;align-items:center;margin:0 .75rem;opacity:0;flex-shrink:0;transition:all .3s}.chat-msg-more>li{padding:.25rem}.chat-msg.is-light{background-color:#e5e9f2;color:#526484}.chat-msg.is-theme{background-color:#0fac81;color:#fff}.chat-meta{display:flex;align-items:center;margin:.25rem -0.375rem 0}.chat-meta li{position:relative;padding:0 .375rem;font-size:12px;color:#8094ae}.chat-meta li:not(:first-child):before{content:"";font-family:"Nioicon";position:absolute;top:50%;left:0;transform:translate(-50%, -50%);font-size:11px;line-height:10px;opacity:.8}.chat-sap{overflow:hidden;text-align:center;padding:1rem 0}.chat-sap-meta{position:relative;display:inline-block;padding:0 .75rem;color:#8094ae;font-size:12px;line-height:1.4}.chat-sap-meta:before,.chat-sap-meta:after{position:absolute;height:1px;background:#dbdfea;content:"";width:100vw;top:50%}.chat-sap-meta:before{right:100%}.chat-sap-meta:after{left:100%}.chat.is-you .chat-bubbles .attach-files{border-color:#fff;overflow:hidden}.chat.is-you .chat-bubbles .attach-files,.chat.is-you .chat-bubbles .attach-foot{background-color:#fff}.chat.is-you .chat-bubble:last-child .chat-msg{border-bottom-left-radius:0}.chat.is-you .chat-bubble:not(:first-child) .chat-msg{border-top-left-radius:4px}.chat.is-you .chat-bubble:not(:last-child) .chat-msg{border-bottom-left-radius:4px}.chat.is-me{justify-content:flex-end}.chat.is-me .chat-msg{background-color:#0fac81;color:#fff}.chat.is-me .chat-meta{justify-content:flex-end}.chat.is-me .chat-bubble{flex-direction:row-reverse}.chat.is-me .chat-bubbles .attach-files{border-color:#abe2d3;overflow:hidden}.chat.is-me .chat-bubbles .attach-files,.chat.is-me .chat-bubbles .attach-foot{background-color:#fff}.chat.is-me .chat-bubble:last-child .chat-msg{border-bottom-right-radius:0}.chat.is-me .chat-bubble:not(:first-child) .chat-msg{border-top-right-radius:4px}.chat.is-me .chat-bubble:not(:last-child) .chat-msg{border-bottom-right-radius:4px}.chat-upload-option{display:none;position:absolute;left:100%;padding:.5rem;background-color:#fff}.chat-upload-option.expanded{display:block}.chat-upload-option ul{display:flex;align-items:center}.chat-upload-option a{color:#0fac81;font-size:1.25rem;height:36px;width:36px;display:inline-flex;align-items:center;justify-content:center}.chat-upload-option a:hover{color:#0c8665}.fav-list{display:flex;margin:-0.375rem;overflow-x:auto}.fav-list li{padding:.375rem}.fav-list a:hover>.user-avatar:after{opacity:1}.fav-list .user-avatar{height:44px;width:44px}.fav-list .user-avatar:after{content:"";position:absolute;width:100%;left:0;height:100%;background:#e5e9f2;transform:scale(1.15);opacity:0;border-radius:50%;z-index:-1;transition:opacity .3s}@media(min-width: 768px){.fav-list{flex-wrap:wrap}}@media(max-width: 859px){.fav-list{margin:-0.375rem 0}.fav-list li:first-child{padding-left:0}.fav-list li:last-child{padding-right:0}}.channel-list li{margin:.125rem -0.5rem}.channel-list a{padding:.375rem .5rem;display:block;transition:all .3s;font-weight:500;color:#526484;border-radius:3px}.channel-list a:hover,.channel-list a.active{color:#0fac81;background:#e2f5f0}.contacts-list{margin:-0.375rem -0.5rem}.contacts-list+.contacts-list{margin-top:1.75rem}.contacts-list li{position:relative}.contacts-list li>.title{padding-left:1.25rem;margin-bottom:.25rem}.contacts-list .user-card{position:relative;padding:.375rem .5rem;border-radius:3px;transition:background-color .3s}.contacts-list .user-card>a{width:100%;display:flex;align-items:center}.contacts-list .user-card:hover{background-color:#ebeef2}.contacts-list .user-card:hover .user-actions{opacity:1;pointer-events:initial;transition:opacity .4s}.contacts-list .user-meta{margin-left:auto;font-size:12px;color:#8094ae}.contacts-list .user-actions{font-size:12px;position:absolute;top:0;right:.25rem;bottom:0;width:4.5rem;background-color:#ebeef2;display:flex;align-items:center;justify-content:flex-end;opacity:0;pointer-events:none}.contacts-list .user-actions>a{padding:0 .375rem}.contacts-add-link{padding:.375rem .5rem;display:flex;align-items:center}.contacts-add-link .lead-text{font-weight:500;font-size:13px}.nk-chat{position:relative;display:flex;overflow:hidden}.nk-chat-blank{display:flex;align-items:center;justify-content:center;flex-direction:column;height:100%;background-color:#e5e9f2}.nk-chat-blank-icon{margin-bottom:1.5rem}.nk-chat-aside{background:#fff;width:100%;overflow:hidden;max-height:calc(100vh - (65px + 96px));position:relative;display:flex;flex-direction:column;flex-shrink:0;border:1px solid #e5e9f2;border-radius:4px;padding-bottom:1.25rem}.nk-chat-aside-head{display:flex;align-items:center;justify-content:space-between;padding:1.125rem 1.25rem .875rem}.nk-chat-aside-user .title{font-size:1.375rem;color:#364a63}.nk-chat-aside-user .user-avatar{height:36px;width:36px}.nk-chat-aside-user .user-avatar+.title{margin-left:1rem}.nk-chat-aside-user .dropdown-toggle:after{font-size:1.125rem;color:#8094ae;margin-left:1rem}.nk-chat-aside-tools{display:flex;align-items:center}.nk-chat-aside-body{max-height:100%;height:100%;overflow:auto}.nk-chat-aside-search{padding:0 1.25rem;margin-bottom:1.75rem;margin-top:.25rem}.nk-chat-aside-search .form-control,.nk-chat-aside-search div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .nk-chat-aside-search input,.nk-chat-aside-search .dual-listbox .dual-listbox__search,.dual-listbox .nk-chat-aside-search .dual-listbox__search{background-color:#f5f6fa;border-color:#f5f6fa}.nk-chat-aside-search .form-control::placeholder,.nk-chat-aside-search div.dataTables_wrapper div.dataTables_filter input::placeholder,div.dataTables_wrapper div.dataTables_filter .nk-chat-aside-search input::placeholder,.nk-chat-aside-search .dual-listbox .dual-listbox__search::placeholder,.dual-listbox .nk-chat-aside-search .dual-listbox__search::placeholder{color:#8094ae}.nk-chat-aside-panel{padding:0 1.25rem 1.75rem}.nk-chat-aside-panel .title{margin-bottom:.75rem}.nk-chat-list{padding:0 .5rem}.nk-chat-list .title{margin-left:.75rem}.nk-chat-body{background:#fff;position:absolute;top:0;left:0;right:0;bottom:0;flex-grow:1;display:flex;flex-direction:column;overflow:hidden;transition:padding .3s ease-in-out;opacity:0;pointer-events:none;z-index:5;border:1px solid #e5e9f2}.nk-chat-body.show-chat{opacity:1;pointer-events:auto}.nk-chat-head{position:relative;display:flex;align-items:center;justify-content:space-between;padding:1rem 1.75rem;border-bottom:1px solid #e5e9f2;background-color:#fff}.nk-chat-head-info{width:60%}.nk-chat-head-info .user-avatar+.user-info{margin-left:.75rem}.nk-chat-head-info .user-info .lead-text{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.nk-chat-head-info,.nk-chat-head-tools{display:flex;align-items:center;margin:-0.125rem}.nk-chat-head-info>li,.nk-chat-head-tools>li{padding:.125rem}.nk-chat-head-info .btn-icon .icon,.nk-chat-head-info .dt-buttons .btn-secondary .icon,.dt-buttons .nk-chat-head-info .btn-secondary .icon,.nk-chat-head-tools .btn-icon .icon,.nk-chat-head-tools .dt-buttons .btn-secondary .icon,.dt-buttons .nk-chat-head-tools .btn-secondary .icon{font-size:1.25rem}.nk-chat-head-search{position:absolute;top:calc(100% + 1rem);left:0;z-index:9;width:100%;padding:0 1.75rem;opacity:0;pointer-events:none;transform:translateY(-10px);transition:all .5s}.nk-chat-head-search.show-search{opacity:1;pointer-events:auto;transform:none}.nk-chat-panel{background-color:rgba(235,238,242,.7);height:100%;max-height:100%;overflow:auto;padding:1.25rem}.nk-chat-editor{display:flex;align-items:center;padding:1rem 1.25rem;background-color:#fff}.nk-chat-editor-form{padding:0 .5rem;flex-grow:1}.nk-chat-editor-form .form-control,.nk-chat-editor-form div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .nk-chat-editor-form input,.nk-chat-editor-form .dual-listbox .dual-listbox__search,.dual-listbox .nk-chat-editor-form .dual-listbox__search{min-height:36px;padding-top:.5rem}.nk-chat-editor-upload,.nk-chat-editor-tools{display:flex;align-items:center}.nk-chat-editor-upload .btn-icon .icon,.nk-chat-editor-upload .dt-buttons .btn-secondary .icon,.dt-buttons .nk-chat-editor-upload .btn-secondary .icon,.nk-chat-editor-tools .btn-icon .icon,.nk-chat-editor-tools .dt-buttons .btn-secondary .icon,.dt-buttons .nk-chat-editor-tools .btn-secondary .icon{font-size:1.5rem}.nk-chat-editor-upload{position:relative;z-index:2}.nk-chat-editor-upload .toggle-opt{transition:.3s}.nk-chat-editor-upload .toggle-opt.active{opacity:.7;transform:rotate(-45deg)}.nk-chat-profile{position:absolute;top:0;right:0;transform:translateX(100%);width:325px;height:100%;max-height:100%;transition:transform .3s ease-in-out;background:#fff;z-index:100}.nk-chat-profile-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(16,25,36,.4);z-index:600;z-index:90;animation:overlay-fade-in .4s ease 1}.nk-chat-profile.visible{transform:none}@media(max-width: 575.98px){.nk-chat-head{padding:.75rem 1.25rem}.nk-chat-head-user{max-width:calc(100% - 34px)}.nk-chat-head-user .user-avatar{height:36px;width:36px}.nk-chat-head-user .user-info{width:calc(100% - 36px - .75rem)}}@media(min-width: 576px){.nk-chat-head-info,.nk-chat-head-tools{margin:-0.375rem}.nk-chat-head-info>li,.nk-chat-head-tools>li{padding:.375rem}.nk-chat-aside{max-height:calc(100vh - (65px + 108px))}}@media(min-width: 576px)and (max-width: 991px){.nk-chat-aside-head,.nk-chat-aside-search{padding-left:2.25rem;padding-right:2.25rem}.nk-chat-aside-panel{padding:0 2.25rem 1.75rem}.nk-chat-list{padding:0 1.5rem}.nk-chat-head,.nk-chat-panel,.nk-chat-editor{padding-left:2.25rem;padding-right:2.25rem}.nk-chat-head-search{padding:0 2.25rem}}@media(min-width: 860px){.nk-chat-aside{width:320px;margin-right:1.5rem;max-height:calc(100vh - (65px + 112px))}.nk-chat-body{position:relative;opacity:1;pointer-events:auto;max-height:calc(100vh - (65px + 112px));border-radius:4px}.nk-chat-body-close{display:none}}@media(max-width: 859px){.nk-chat-body{position:fixed}.nk-chat-body.show-chat{z-index:2999}.nk-chat-head{padding-top:.75rem;padding-bottom:.75rem}}@media(min-width: 860px)and (max-width: 991px){.nk-chat-aside{width:345px}}@media(min-width: 992px){.nk-chat-aside-panel,.nk-chat-aside-head,.nk-chat-aside-search{padding-left:1.75rem;padding-right:1.75rem}.nk-chat-list{padding:0 1rem}.nk-chat-aside{width:325px}.nk-chat-panel{padding:1.25rem 1.75rem}.chat-profile-head,.chat-profile-body-inner{padding-right:1.75rem;padding-left:1.75rem}}@media(min-width: 1200px){.nk-chat-profile{border-left:1px solid #e5e9f2}}@media(min-width: 1540px){.nk-chat-aside{width:382px}.nk-chat-profile{width:365px}}@media(max-width: 359px){.nk-chat-profile{width:280px}}.nk-code-preview-box{display:block;color:#8094ae;padding:.15rem 1.25rem;border-left:1px solid #e5e9f2}.dashboard-preview{height:200px;justify-content:center}.dropdown-preview .dropdown-menu{position:static;display:block}.dropdown-preview:after{display:block;clear:both;content:""}@media(max-width: 420px){.dropdown-preview .dropdown-menu-xl,.dropdown-preview .dropdown-menu-lg,.dropdown-preview .dropdown-menu-md{min-width:100%;max-width:100%}}.prettyprint{padding:1.25rem;white-space:pre;box-shadow:none !important;margin-bottom:0;border-radius:4px;overflow:auto}.card-preview{border:1px solid #dbdfea}.code-block{position:relative;border:1px solid #dbdfea;padding:1.25rem;background:#fff;border-radius:4px}.code-block .clipboard-init{position:absolute;top:12px;right:12px}.code-block+.code-block,.card-preview+.code-block{margin-top:28px}.code-block+.code-block{border-top-color:#e5e9f2;border-radius:0 0 4px 4px}.code-block+.card-preview,.code-block+.nk-block-head{margin-top:40px}.code-block .prettyprint{background:#f5f6fa;border:none;padding:.75rem;font-size:11px;line-height:20px;max-height:136px}.code-block .title{margin-bottom:1rem}.code-block .btn,.code-block .dual-listbox .dual-listbox__button,.dual-listbox .code-block .dual-listbox__button{background-color:#fff}.code-block .btn:focus,.code-block .dual-listbox .dual-listbox__button:focus,.dual-listbox .code-block .dual-listbox__button:focus,.code-block .btn:hover,.code-block .dual-listbox .dual-listbox__button:hover,.dual-listbox .code-block .dual-listbox__button:hover{border-color:#dbdfea;box-shadow:none}.code-block-clean .title{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#8094ae;font-weight:500;margin-bottom:.45rem;display:block}.preview-icon-list{display:flex;flex-wrap:wrap;margin:-15px}.preview-icon-item{flex:1 0 150px;padding:15px;max-width:50%}.preview-icon-box{position:relative;padding:25px 20px;text-align:center}.preview-icon-box .btn-clipboard{position:absolute;top:0;right:0;opacity:0;z-index:1}.preview-icon-box .btn-clipboard:focus{border-color:rgba(0,0,0,0);box-shadow:none}.preview-icon-box:hover .btn-clipboard{opacity:1}.preview-icon-wrap{padding-bottom:5px}.preview-icon-wrap .ni{font-size:30px}.preview-icon-svg .preview-icon-wrap{margin-bottom:.5rem}.preview-icon-svg .preview-icon-wrap svg{width:90px}.preview-icon-name{color:#8094ae;font-size:11px}.preview-title,.preview-title-lg{display:block;padding-bottom:.75rem}.preview-title-lg{font-size:13px}.preview-hr{border-top:1px solid #dbdfea;margin-top:2rem;margin-bottom:2rem}.preview-hr+.preview-title{padding-top:.5rem}.nk-block-head+.preview-hr{margin-top:.5rem}.preview-list{display:flex;flex-wrap:wrap;margin:-0.75rem}.preview-item{padding:.75rem}.preview-btn-list{display:flex;flex-wrap:wrap;margin:-0.75rem}.preview-btn-item{width:50%;padding:.75rem}.preview-btn-list-fw .preview-btn-item{width:100%}.preview-btn-list-3x .preview-btn-item{width:33.33%}.example-width>div,.example-height>div,.example-border>div,.example-spacing>div{font-size:11px;padding:.5rem;text-align:center;background-color:#f5f6fa}.example-border{margin:-0.5rem}.example-border>div{height:4.5rem;width:4.5rem;margin:.5rem}.example-border-all>div{border:1px solid #dbdfea}.example-width>div{height:2rem;background-color:#e5e9f2;margin-bottom:.25rem}.example-height{height:8rem}.example-height>div{width:8rem;background-color:#e5e9f2;margin-right:.5rem}.example-spacing>div{height:2rem;width:4.5rem;background-color:#e5e9f2;margin-bottom:.5rem}.example-spacing-pd>div{margin-right:.5rem;height:auto;width:auto}.example-spacing-pd>div>span{display:block;padding:.25rem;line-height:1;border-radius:2px;background-color:#fff}.example-alerts:not(:last-child){margin-bottom:28px}.components-preview h4.title,.components-preview .title.h4,.components-preview h5.title,.components-preview .title.h5{font-size:1.25rem;letter-spacing:-0.01rem;font-family:Roboto,sans-serif;font-weight:500}.components-preview .card-preview>.card-inner{padding:1.25rem}@media(min-width: 768px){.preview-btn-item{width:25%}.preview-btn-list-fw .preview-btn-item{width:25%}.preview-btn-list-3x .preview-btn-item{width:16.66%}}@media(min-width: 992px){.components-preview .nk-block+.nk-block-lg{padding-top:3.75rem}}@media(max-width: 767.98px){.preview-reference tr,.preview-reference th,.preview-reference td{display:block;border:0;width:100% !important}.preview-reference tbody tr{padding:.5rem 0}.preview-reference tbody tr:not(:last-child){border-bottom:1px solid #e5e9f2}.preview-reference tbody tr:nth-child(2n){background-color:rgba(245,246,250,.3)}.preview-reference tr td{padding:.2rem 1.25rem}.preview-reference tr th:not(:first-child){display:none}}.nk-body.ui-clean{background:#fff !important}.nk-body.ui-softy,.nk-body.ui-shady,.nk-body.ui-softy .nk-header-fixed,.nk-body.ui-shady .nk-header-fixed{background:#f5f6fa !important}.ui-softy .card,.ui-softy .code-block,.ui-softy .invoice-wrap,.ui-softy .accordion:not(.accordion-s2):not(.accordion-s3),.ui-shady .card,.ui-shady .code-block,.ui-shady .invoice-wrap,.ui-shady .accordion:not(.accordion-s2):not(.accordion-s3){border:none}.ui-softy .table .table-light th,.ui-shady .table .table-light th{background:rgba(245,246,250,.5);box-shadow:0 -1px 5px -5px rgba(31,43,58,.7)}.ui-softy .tb-tnx-head,.ui-shady .tb-tnx-head{background:rgba(245,246,250,.5)}.ui-softy .card .card-inner+.table .tb-tnx-head,.ui-shady .card .card-inner+.table .tb-tnx-head{border-top:1px solid #dbdfea}.ui-softy .kanban-board-header,.ui-shady .kanban-board-header{border-left:0;border-right:0;border-bottom:0}.ui-softy .kanban-item,.ui-shady .kanban-item{border:0}.ui-softy .card,.ui-softy .code-block,.ui-softy .invoice-wrap,.ui-softy .accordion:not(.accordion-s2):not(.accordion-s3),.ui-softy.npc-apps-messages .nk-reply-form,.ui-softy.npc-apps-inbox .nk-reply-form,.ui-softy .nk-files-view-grid .nk-file,.ui-softy .nk-files-view-group .nk-file,.ui-softy .nk-files-view-list .nk-files-list,.ui-softy .chat-msg,.ui-softy .kanban-board-header,.ui-softy .kanban-item,.ui-softy .kanban-add-task{box-shadow:0 1px 4px rgba(31,43,58,.15)}.ui-softy .card .accordion:not(.accordion-s2):not(.accordion-s3){box-shadow:none;border:1px solid #dbdfea}.ui-shady .card,.ui-shady .code-block,.ui-shady .invoice-wrap,.ui-shady .accordion:not(.accordion-s2):not(.accordion-s3),.ui-shady.npc-apps-messages .nk-reply-form,.ui-shady.npc-apps-inbox .nk-reply-form,.ui-shady .nk-files-view-grid .nk-file,.ui-shady .nk-files-view-group .nk-file,.ui-shady .nk-files-view-list .nk-files-list,.ui-shady .chat-msg,.ui-shady .kanban-board-header,.ui-shady .kanban-item,.ui-shady .kanban-add-task{box-shadow:0 0 25px -12px rgba(31,43,58,.15)}.ui-shady .card .accordion:not(.accordion-s2):not(.accordion-s3){box-shadow:none;border:1px solid #dbdfea}.ui-softy .nk-ibx-aside,.ui-softy .nk-ibx-body,.ui-softy .nk-fmg-aside,.ui-softy .nk-fmg-body,.ui-softy .nk-msg-aside,.ui-softy .nk-msg-body,.ui-softy .nk-chat-aside,.ui-softy .nk-chat-body{box-shadow:0 1px 4px rgba(31,43,58,.15)}.ui-shady .nk-ibx-aside,.ui-shady .nk-ibx-body,.ui-shady .nk-fmg-aside,.ui-shady .nk-fmg-body,.ui-shady .nk-msg-aside,.ui-shady .nk-msg-body,.ui-shady .nk-chat-aside,.ui-shady .nk-chat-body{box-shadow:0 0 25px -12px rgba(31,43,58,.15)}.ui-shady .nk-msg-aside,.ui-shady .nk-msg-nav,.ui-softy .nk-msg-aside,.ui-softy .nk-msg-nav{background:#fff}.ui-shady .nk-msg-item.active,.ui-shady .nk-msg-item.current,.ui-softy .nk-msg-item.active,.ui-softy .nk-msg-item.current{background:rgba(245,246,250,.5);position:relative}.ui-shady .nk-msg-item.active:after,.ui-shady .nk-msg-item.current:after,.ui-softy .nk-msg-item.active:after,.ui-softy .nk-msg-item.current:after{position:absolute;content:"";left:0;top:0;height:100%;width:2px;background:#0fac81}.ui-shady.npc-apps-messages .nk-msg-item.active,.ui-shady.npc-apps-messages .nk-msg-item.current,.ui-softy.npc-apps-messages .nk-msg-item.active,.ui-softy.npc-apps-messages .nk-msg-item.current{background:#f5f6fa}.ui-shady.npc-apps-messages .nk-msg-item.active:after,.ui-shady.npc-apps-messages .nk-msg-item.current:after,.ui-softy.npc-apps-messages .nk-msg-item.active:after,.ui-softy.npc-apps-messages .nk-msg-item.current:after{width:3px}.ui-shady.npc-apps-messages .nk-msg-reply,.ui-softy.npc-apps-messages .nk-msg-reply{box-shadow:inset 0 0 8px -5px rgba(16,25,36,.3)}.ui-shady.npc-apps-inbox .nk-ibx-reply,.ui-shady.npc-apps-inbox .nk-ibx-nav,.ui-softy.npc-apps-inbox .nk-ibx-reply,.ui-softy.npc-apps-inbox .nk-ibx-nav{box-shadow:inset 0 0 8px -5px rgba(16,25,36,.3)}.ui-shady.npc-apps-inbox .nk-ibx-item,.ui-softy.npc-apps-inbox .nk-ibx-item{box-shadow:0 0 7px -1px rgba(16,25,36,.1)}.ui-shady.npc-apps-chat .nk-chat-panel,.ui-softy.npc-apps-chat .nk-chat-panel{box-shadow:inset 0 0 8px -5px rgba(16,25,36,.3)}.ui-clean.npc-apps-messages .nk-msg-aside,.ui-clean.npc-apps-messages .nk-msg-nav{background:#fff}.ui-clean.npc-apps-messages .nk-msg-item.active,.ui-clean.npc-apps-messages .nk-msg-item.current{background:#f5f6fa}.ui-clean.npc-apps-chat .nk-chat-panel{background:#fff}.ui-clean.npc-apps-chat .chat.is-you .chat-msg{background-color:#e5e9f2;color:#364a63}.ui-rounder .card,.ui-rounder .ratio,.ui-rounder .accordion,.ui-rounder .invoice,.ui-rounder .code-block,.ui-rounder .swal2-popup,.ui-rounder .prettyprint,.ui-rounder .invoice-wrap,.ui-rounder .nk-ibx,.ui-rounder .nk-ibx-body,.ui-rounder .nk-fmg-body,.ui-rounder .nk-msg-aside,.ui-rounder .nk-msg-body,.ui-rounder .nk-chat-aside,.ui-rounder .note-editor.note-frame,.ui-rounder .tox-tinymce{border-radius:12px}.ui-rounder .card>.list-group:first-child,.ui-rounder .card-header:first-child,.ui-rounder .card-img,.ui-rounder .card-img-top,.ui-rounder .ql-toolbar,.ui-rounder .note-toolbar{border-top-left-radius:11px;border-top-right-radius:11px}.ui-rounder .card>.list-group:last-child,.ui-rounder .card-footer:last-child,.ui-rounder .ql-container{border-bottom-right-radius:11px;border-bottom-left-radius:11px}.ui-rounder .card .table tr:first-child th:first-child{border-top-left-radius:11px}.ui-rounder .card .table tr:first-child th:last-child{border-top-right-radius:11px}@media(min-width: 860px){.nk-chat-body{border-radius:12px}}@media(min-width: 992px){.nk-ibx-aside,.nk-fmg-aside{border-radius:12px}}body.dark-mode{background:#101924 !important;color:#b6c6e3}body.dark-mode.bg-lighter,.dual-listbox body.dark-mode.dual-listbox__item:hover,body.dark-mode.bg-light{background:#0b1219 !important}body.dark-mode.nk-body.ui-softy,body.dark-mode.nk-body.ui-shady{background:#101924 !important}.dark-mode .logo-dark{opacity:0}.dark-mode .logo-light{opacity:1}.dark-mode h1,.dark-mode h2,.dark-mode h3,.dark-mode h4,.dark-mode h5,.dark-mode h6,.dark-mode .h1,.dark-mode .h2,.dark-mode .h3,.dark-mode .h4,.dark-mode .h5,.dark-mode .h6,.dark-mode .lead-text,.dark-mode .dropdown-title,.dark-mode pre{color:#fff}.dark-mode .text-base,.dark-mode .text-body,.dark-mode .link-text{color:#b6c6e3 !important}.dark-mode .text-secondary,.dark-mode .icon[class*=bg-secondary-dim],.dark-mode .user-avatar[class*=-light],.dark-mode .icon[class*=bg-light]{color:#8094ae !important}.dark-mode .text-dark{color:#fff !important}.dark-mode .text-muted{color:#8094ae !important}.dark-mode .text-light,.dark-mode .user-avatar[class*=-dark]{color:#8091a7 !important}.dark-mode .text-lighter{color:#3c4d62 !important}.dark-mode .text-indigo{color:#6370ca !important}.dark-mode .bg-light{background-color:#0b1219 !important}.dark-mode .bg-lighter,.dark-mode .dual-listbox .dual-listbox__item:hover,.dual-listbox .dark-mode .dual-listbox__item:hover{background-color:#0e1720 !important}.dark-mode .table-striped tbody tr:nth-of-type(odd){background-color:#101924 !important}.dark-mode .bg-white{background-color:#18212d !important}.dark-mode .bg-transparent.bg-transparent{background-color:rgba(0,0,0,0) !important}.dark-mode .bg-dark{background-color:#ebeef2 !important}.dark-mode .bg-blue-dim{background-color:#21334c !important}.dark-mode .bg-azure-dim{background-color:#182e4c !important}.dark-mode .bg-indigo-dim{background-color:#1b243a !important}.dark-mode .bg-purple-dim{background-color:#282c4d !important}.dark-mode .bg-pink-dim{background-color:#3b2b3f !important}.dark-mode .bg-orange-dim{background-color:#3b3533 !important}.dark-mode .bg-teal-dim{background-color:#193a3d !important}.dark-mode .bg-primary-dim,.dark-mode .dual-listbox .dual-listbox__item:active,.dual-listbox .dark-mode .dual-listbox__item:active,.dark-mode .dual-listbox .dual-listbox__item.dual-listbox__item--selected,.dual-listbox .dark-mode .dual-listbox__item.dual-listbox__item--selected{background-color:#17363a !important}.dark-mode .bg-success-dim{background-color:#193e40 !important}.dark-mode .bg-info-dim{background-color:#163948 !important}.dark-mode .bg-warning-dim{background-color:#393828 !important}.dark-mode .bg-danger-dim{background-color:#372931 !important}.dark-mode .bg-secondary-dim{background-color:#1e2938 !important}.dark-mode .bg-dark-dim{background-color:#19232f !important}.dark-mode .bg-gray-dim{background-color:#28323f !important}.dark-mode .bg-btc-dim{background-color:#3a302b !important}.dark-mode .bg-eth-dim{background-color:#232d42 !important}.dark-mode .alert-primary{color:#0fac81;background-color:#17363a;border-color:#17363a}.dark-mode .alert-primary hr{border-top-color:#17363a}.dark-mode .alert-primary .alert-link{color:#0b7d5e}.dark-mode .alert-fill.alert-primary{color:#fff;background:#0fac81}.dark-mode .alert-fill.alert-primary .alert-link{color:#fff}.dark-mode .alert-pro.alert-primary{border-color:#0fac81}.dark-mode .alert-secondary{color:#8ca3c0;background-color:#1e2938;border-color:#1e2938}.dark-mode .alert-secondary hr{border-top-color:#1e2938}.dark-mode .alert-secondary .alert-link{color:#6b89ae}.dark-mode .alert-fill.alert-secondary{color:#fff;background:#8ca3c0}.dark-mode .alert-fill.alert-secondary .alert-link{color:#fff}.dark-mode .alert-pro.alert-secondary{border-color:#8ca3c0}.dark-mode .alert-success{color:#1ee0ac;background-color:#193e40;border-color:#193e40}.dark-mode .alert-success hr{border-top-color:#193e40}.dark-mode .alert-success .alert-link{color:#18b389}.dark-mode .alert-fill.alert-success{color:#fff;background:#1ee0ac}.dark-mode .alert-fill.alert-success .alert-link{color:#fff}.dark-mode .alert-pro.alert-success{border-color:#1ee0ac}.dark-mode .alert-warning{color:#f4bd0e;background-color:#393828;border-color:#393828}.dark-mode .alert-warning hr{border-top-color:#393828}.dark-mode .alert-warning .alert-link{color:#c69909}.dark-mode .alert-fill.alert-warning{color:#fff;background:#f4bd0e}.dark-mode .alert-fill.alert-warning .alert-link{color:#fff}.dark-mode .alert-pro.alert-warning{border-color:#f4bd0e}.dark-mode .alert-info{color:#09c2de;background-color:#163948;border-color:#163948}.dark-mode .alert-info hr{border-top-color:#163948}.dark-mode .alert-info .alert-link{color:#0797ad}.dark-mode .alert-fill.alert-info{color:#fff;background:#09c2de}.dark-mode .alert-fill.alert-info .alert-link{color:#fff}.dark-mode .alert-pro.alert-info{border-color:#09c2de}.dark-mode .alert-danger{color:#e85347;background-color:#372931;border-color:#372931}.dark-mode .alert-danger hr{border-top-color:#372931}.dark-mode .alert-danger .alert-link{color:#e02b1c}.dark-mode .alert-fill.alert-danger{color:#fff;background:#e85347}.dark-mode .alert-fill.alert-danger .alert-link{color:#fff}.dark-mode .alert-pro.alert-danger{border-color:#e85347}.dark-mode .alert-gray{color:#b7c2d0;background-color:#28323f;border-color:#28323f}.dark-mode .alert-gray hr{border-top-color:#28323f}.dark-mode .alert-gray .alert-link{color:#98a8bc}.dark-mode .alert-fill.alert-gray{color:#fff;background:#b7c2d0}.dark-mode .alert-fill.alert-gray .alert-link{color:#fff}.dark-mode .alert-pro.alert-gray{border-color:#b7c2d0}.dark-mode .alert-dark{color:#1f2b3a;background-color:#19232f;border-color:#19232f}.dark-mode .alert-dark hr{border-top-color:#19232f}.dark-mode .alert-dark .alert-link{color:#0d1219}.dark-mode .alert-fill.alert-dark{color:#fff;background:#1f2b3a}.dark-mode .alert-fill.alert-dark .alert-link{color:#fff}.dark-mode .alert-pro.alert-dark{border-color:#1f2b3a}.dark-mode .alert-light{color:#ebeef2;background-color:#28323f;border-color:#28323f}.dark-mode .alert-light hr{border-top-color:#28323f}.dark-mode .alert-light .alert-link{color:#ccd4de}.dark-mode .alert-fill.alert-light{color:#000;background:#ebeef2}.dark-mode .alert-fill.alert-light .alert-link{color:#000}.dark-mode .alert-pro.alert-light{border-color:#ebeef2}.dark-mode .badge-dim.bg-primary{color:#0fac81;background-color:#17363a !important;border-color:#17363a}.dark-mode .badge-dim.bg-outline-primary{color:#0fac81;background-color:#17363a;border-color:#14594f}.dark-mode .badge-dim.bg-secondary{color:#8ca3c0;background-color:#293543 !important;border-color:#293543}.dark-mode .badge-dim.bg-outline-secondary{color:#8ca3c0;background-color:#293543;border-color:#465568}.dark-mode .badge-dim.bg-success{color:#1ee0ac;background-color:#193e40 !important;border-color:#193e40}.dark-mode .badge-dim.bg-outline-success{color:#1ee0ac;background-color:#193e40;border-color:#1a6d60}.dark-mode .badge-dim.bg-info{color:#09c2de;background-color:#163948 !important;border-color:#163948}.dark-mode .badge-dim.bg-outline-info{color:#09c2de;background-color:#163948;border-color:#126174}.dark-mode .badge-dim.bg-warning{color:#f4bd0e;background-color:#393828 !important;border-color:#393828}.dark-mode .badge-dim.bg-outline-warning{color:#f4bd0e;background-color:#393828;border-color:#705f21}.dark-mode .badge-dim.bg-danger{color:#e85347;background-color:#372931 !important;border-color:#372931}.dark-mode .badge-dim.bg-outline-danger{color:#e85347;background-color:#372931;border-color:#6b3537}.dark-mode .badge-dim.bg-light{color:#b7c2d0;background-color:#303945 !important;border-color:#303945}.dark-mode .badge-dim.bg-outline-light{color:#b7c2d0;background-color:#303945;border-color:#58616e}.dark-mode .badge-dim.bg-dark{color:#e5e9f2;background-color:#373f4b !important;border-color:#373f4b}.dark-mode .badge-dim.bg-outline-dark{color:#e5e9f2;background-color:#373f4b;border-color:#6a717c}.dark-mode .badge-dim.bg-gray{color:#8091a7;background-color:#28323f !important;border-color:#28323f}.dark-mode .badge-dim.bg-outline-gray{color:#8091a7;background-color:#28323f;border-color:#424e5e}.dark-mode .badge-dim.bg-lighter,.dark-mode .dual-listbox .badge-dim.dual-listbox__item:hover,.dual-listbox .dark-mode .badge-dim.dual-listbox__item:hover{color:#8091a7;background-color:#28323f !important;border-color:#28323f}.dark-mode .badge-dim.bg-outline-lighter{color:#8091a7;background-color:#28323f;border-color:#424e5e}.dark-mode .bg-outline-secondary,.dark-mode .badge-dot.bg-dark,.dark-mode .badge-dot.bg-secondary{color:#b7c2d0}.dark-mode .bg-outline-dark{color:#e5e9f2;border-color:#e5e9f2}.dark-mode .bg-outline-light{color:#b7c2d0;border-color:#344357}.dark-mode .badge-dot.bg-dark,.dark-mode .badge-dot.bg-light{background-color:rgba(0,0,0,0) !important}.dark-mode .badge-dot.bg-light{color:#8091a7}.dark-mode .bg-light,.dark-mode .code-block .btn,.dark-mode .code-block .dual-listbox .dual-listbox__button,.dual-listbox .dark-mode .code-block .dual-listbox__button{color:#e5e9f2;background:#344357;border-color:#344357}.dark-mode .bg-dark{color:#1f2b3a;background:#e5e9f2;border-color:#e5e9f2}.dark-mode .btn-light,.dark-mode .dual-listbox .dual-listbox__button,.dual-listbox .dark-mode .dual-listbox__button{color:#e5e9f2;background:#344357;border-color:#344357}.dark-mode .btn-light:not(:disabled):not(.disabled):hover,.dark-mode .dual-listbox .dual-listbox__button:not(:disabled):not(.disabled):hover,.dual-listbox .dark-mode .dual-listbox__button:not(:disabled):not(.disabled):hover,.dark-mode .btn-light:not(:disabled):not(.disabled):focus,.dark-mode .dual-listbox .dual-listbox__button:not(:disabled):not(.disabled):focus,.dual-listbox .dark-mode .dual-listbox__button:not(:disabled):not(.disabled):focus,.dark-mode .btn-light:not(:disabled):not(.disabled).focus,.dark-mode .dual-listbox .dual-listbox__button:not(:disabled):not(.disabled).focus,.dual-listbox .dark-mode .dual-listbox__button:not(:disabled):not(.disabled).focus,.dark-mode .btn-light:not(:disabled):not(.disabled):active,.dark-mode .dual-listbox .dual-listbox__button:not(:disabled):not(.disabled):active,.dual-listbox .dark-mode .dual-listbox__button:not(:disabled):not(.disabled):active,.dark-mode .btn-light:not(:disabled):not(.disabled).active,.dark-mode .dual-listbox .dual-listbox__button:not(:disabled):not(.disabled).active,.dual-listbox .dark-mode .dual-listbox__button:not(:disabled):not(.disabled).active{background:#435771;border-color:#435771;color:#e5e9f2}.dark-mode .btn-dark{color:#1f2b3a;background:#e5e9f2;border-color:#e5e9f2}.dark-mode .btn-dark:not(:disabled):not(.disabled):hover,.dark-mode .btn-dark:not(:disabled):not(.disabled):focus,.dark-mode .btn-dark:not(:disabled):not(.disabled).focus,.dark-mode .btn-dark:not(:disabled):not(.disabled):active,.dark-mode .btn-dark:not(:disabled):not(.disabled).active{background:#fff;border-color:#fff;color:#1f2b3a}.dark-mode .btn-outline-dark{border-color:#e5e9f2;color:#e5e9f2}.dark-mode .btn-outline-dark:not(:disabled):not(.disabled):hover{background:#e5e9f2;color:#1f2b3a}.dark-mode .btn-outline-secondary{border-color:#5a7ba5;color:#5a7ba5}.dark-mode .btn-outline-secondary:not(:disabled):not(.disabled):hover{background:#5a7ba5;color:#fff}.dark-mode .btn-outline-light,.dark-mode .dt-buttons .btn-secondary,.dt-buttons .dark-mode .btn-secondary{border-color:#3c4d62;color:#b7c2d0}.dark-mode .btn-outline-light:not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-secondary:not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-secondary:not(:disabled):not(.disabled):hover{background:#3c4d62;color:#fff}.dark-mode .btn-dim.btn-primary{color:#0fac81;background-color:#163a3c;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-primary:not(:disabled):not(.disabled):hover{color:#13dba4;background-color:#205356;border-color:#205356}.dark-mode .btn-dim.btn-secondary{color:#adbdd2;background-color:#202b3b;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-secondary:not(:disabled):not(.disabled):hover{color:#ced8e4;background-color:#2d3c52;border-color:#2d3c52}.dark-mode .btn-dim.btn-success{color:#1ee0ac;background-color:#194344;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-success:not(:disabled):not(.disabled):hover{color:#4ae7bd;background-color:#235d5e;border-color:#235d5e}.dark-mode .btn-dim.btn-warning{color:#f4bd0e;background-color:#403d27;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-warning:not(:disabled):not(.disabled):hover{color:#f6ca3f;background-color:#565235;border-color:#565235}.dark-mode .btn-dim.btn-info{color:#09c2de;background-color:#153e4d;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-info:not(:disabled):not(.disabled):hover{color:#24daf6;background-color:#1d5569;border-color:#1d5569}.dark-mode .btn-dim.btn-danger{color:#e85347;background-color:#3d2a32;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-danger:not(:disabled):not(.disabled):hover{color:#ee7d74;background-color:#523943;border-color:#523943}.dark-mode .btn-dim.btn-gray{color:#b7c2d0;background-color:#2b3543;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-gray:not(:disabled):not(.disabled):hover{color:#d6dce4;background-color:#394659;border-color:#394659}.dark-mode .btn-dim.btn-dark{color:#e5e9f2;background-color:#353e4a;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-dark:not(:disabled):not(.disabled):hover{color:#fff;background-color:#444f5f;border-color:#444f5f}.dark-mode .btn-dim.btn-light,.dark-mode .dual-listbox .btn-dim.dual-listbox__button,.dual-listbox .dark-mode .btn-dim.dual-listbox__button{color:#ebeef2;background-color:#2b3543;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-light:not(:disabled):not(.disabled):hover,.dark-mode .dual-listbox .btn-dim.dual-listbox__button:not(:disabled):not(.disabled):hover,.dual-listbox .dark-mode .btn-dim.dual-listbox__button:not(:disabled):not(.disabled):hover{color:#fff;background-color:#394659;border-color:#394659}.dark-mode .btn-dim.btn-lighter{color:#b7c2d0;background-color:#2b3543;border-color:rgba(0,0,0,0)}.dark-mode .btn-dim.btn-lighter:not(:disabled):not(.disabled):hover{color:#d6dce4;background-color:#394659;border-color:#394659}.dark-mode .btn-dim.btn-outline-primary{color:#0fac81;background-color:#163a3c;border-color:#15524a}.dark-mode .btn-dim.btn-outline-primary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#0fac81;border-color:#0fac81}.dark-mode .btn-white.btn-outline-primary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-primary.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-primary.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-primary:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#0fac81;background:#163a3c}.dark-mode .btn-dim.btn-outline-success{color:#1ee0ac;background-color:#194344;border-color:#1a6459}.dark-mode .btn-dim.btn-outline-success:not(:disabled):not(.disabled):hover{color:#fff;background-color:#1ee0ac;border-color:#1ee0ac}.dark-mode .btn-white.btn-outline-success:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-success.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-success.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-success:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#1ee0ac;background:#194344}.dark-mode .btn-dim.btn-outline-warning{color:#f4bd0e;background-color:#403d27;border-color:#655822}.dark-mode .btn-dim.btn-outline-warning:not(:disabled):not(.disabled):hover{color:#fff;background-color:#f4bd0e;border-color:#f4bd0e}.dark-mode .btn-white.btn-outline-warning:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-warning.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-warning.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-warning:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#f4bd0e;background:#403d27}.dark-mode .btn-dim.btn-outline-info{color:#09c2de;background-color:#153e4d;border-color:#13596b}.dark-mode .btn-dim.btn-outline-info:not(:disabled):not(.disabled):hover{color:#fff;background-color:#09c2de;border-color:#09c2de}.dark-mode .btn-white.btn-outline-info:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-info.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-info.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-info:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#09c2de;background:#153e4d}.dark-mode .btn-dim.btn-outline-danger{color:#e85347;background-color:#3d2a32;border-color:#613336}.dark-mode .btn-dim.btn-outline-danger:not(:disabled):not(.disabled):hover{color:#fff;background-color:#e85347;border-color:#e85347}.dark-mode .btn-white.btn-outline-danger:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-danger.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-danger.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-danger:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#e85347;background:#3d2a32}.dark-mode .btn-dim.btn-outline-secondary{color:#6b89ae;background-color:#202b3b;border-color:#2d3e53}.dark-mode .btn-dim.btn-outline-secondary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#6b89ae;border-color:#6b89ae}.dark-mode .btn-white.btn-outline-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-secondary.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-secondary.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#6b89ae;background:#202b3b}.dark-mode .btn-dim.btn-outline-gray{color:#b7c2d0;background-color:#2b3543;border-color:#3c4858}.dark-mode .btn-dim.btn-outline-gray:not(:disabled):not(.disabled):hover{color:#fff;background-color:#b7c2d0;border-color:#b7c2d0}.dark-mode .btn-white.btn-outline-gray:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-gray.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-gray.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-gray:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#b7c2d0;background:#2b3543}.dark-mode .btn-dim.btn-outline-dark{color:#e5e9f2;background-color:#353e4a;border-color:#505966}.dark-mode .btn-dim.btn-outline-dark:not(:disabled):not(.disabled):hover{color:#000;background-color:#e5e9f2;border-color:#e5e9f2}.dark-mode .btn-white.btn-outline-dark:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-outline-dark.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-outline-dark.btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-dark:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#e5e9f2;background:#353e4a}.dark-mode .btn-dim.btn-outline-light,.dark-mode .dt-buttons .btn-dim.btn-secondary,.dt-buttons .dark-mode .btn-dim.btn-secondary{color:#8091a7;background-color:#1e2937;border-color:#3c4858}.dark-mode .btn-dim.btn-outline-light:not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-dim.btn-secondary:not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-dim.btn-secondary:not(:disabled):not(.disabled):hover{color:#fff;background-color:#8091a7;border-color:#8091a7}.dark-mode .btn-white.btn-outline-light:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-secondary:not(.btn-dim):not(:disabled):not(.disabled):hover,.dark-mode .btn-trans.btn-outline-light:not(.btn-dim):not(:disabled):not(.disabled):hover{color:#8091a7;background:#1e2937}.dark-mode .btn-dim.btn-outline-light:not(:disabled):not(.disabled):hover,.dark-mode .btn-white.btn-outline-light:not(:disabled):not(.disabled):hover,.dark-mode .dt-buttons .btn-secondary:not(:disabled):not(.disabled):hover,.dt-buttons .dark-mode .btn-secondary:not(:disabled):not(.disabled):hover,.dark-mode .btn-dim.btn-outline-light:not(:disabled):not(.disabled):active,.dark-mode .btn-white.btn-outline-light:not(:disabled):not(.disabled):active,.dark-mode .dt-buttons .btn-secondary:not(:disabled):not(.disabled):active,.dt-buttons .dark-mode .btn-secondary:not(:disabled):not(.disabled):active,.dark-mode .show>.btn-white.btn-outline-light.dropdown-toggle,.dark-mode .dt-buttons .show>.dropdown-toggle.btn-secondary,.dt-buttons .dark-mode .show>.dropdown-toggle.btn-secondary{background:#3c4d62;border-color:#3c4d62;color:#fff}.dark-mode .btn-white,.dark-mode .dt-buttons .btn-secondary,.dt-buttons .dark-mode .btn-secondary,.dark-mode .btn-white.btn-dim,.dark-mode .btn-white.btn-outline-light{background:#18212d}.dark-mode .btn-outline-light:focus,.dark-mode .dt-buttons .btn-secondary:focus,.dt-buttons .dark-mode .btn-secondary:focus,.dark-mode .btn-outline-light.focus,.dark-mode .dt-buttons .focus.btn-secondary,.dt-buttons .dark-mode .focus.btn-secondary{box-shadow:0 0 0 .2rem rgba(255,255,255,.07) !important}.dark-mode .border,.dark-mode .border-bottom,.dark-mode .border-top,.dark-mode .border-left,.dark-mode .border-right,.dark-mode .dropdown-inner+.dropdown-inner,.dark-mode .dropdown-head,.dark-mode .dropdown-foot,.dark-mode .preview-hr,.dark-mode .select2-container--default .select2-selection--single,.dark-mode .ql-picker-options,.dark-mode .select2-container--default .select2-selection--multiple,.dark-mode .select2-dropdown,.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field,.dark-mode .ui-timepicker-standard,.dark-mode .ql-toolbar,.dark-mode .ql-container,.dark-mode .note-editor,.dark-mode .note-toolbar,.dark-mode .tox .tox-menubar,.dark-mode .tox-toolbar-overlord,.dark-mode .tox-tinymce,.dark-mode .tox .tox-toolbar__group:not(:last-of-type),.dark-mode .tox .tox-statusbar,.dark-mode .tox .tox-menu,.dark-mode .tox-toolbar,.dark-mode .tox-editor-header,.dark-mode .tox .tox-toolbar,.dark-mode .tox .tox-toolbar__primary,.dark-mode .tox .tox-toolbar__overflow,.dark-mode .tox .tox-collection--list .tox-collection__group,.dark-mode .note-btn-group .note-btn,.dark-mode .note-statusbar,.dark-mode .nk-code-preview-box,.dark-mode .swal2-footer,.dark-mode .example-border-all>div,.dark-mode .btn-toolbar-sep,.dark-mode .page-link,.dark-mode .table th,.dark-mode .table td,.dark-mode .table-bordered,.dark-mode .table-bordered th,.dark-mode .table-bordered td,.dark-mode .datatable-wrap,.dark-mode .nk-tb-head .nk-tb-col,.dark-mode .list-group-item,.dark-mode .modal-header,.dark-mode .modal-footer,.dark-mode .popover,.dark-mode .popover-header,.dark-mode .tagify__tag>div::before,.dark-mode .tagify__tag:hover:not([readonly]) div::before,.dark-mode .nk-tb-item:not(:last-child) .nk-tb-col,.dark-mode .nk-activity-item:not(:last-child),.dark-mode .nk-support-item:not(:last-child),.dark-mode .card-inner-group .card-inner:not(:last-child),.dark-mode .card-aside,.dark-mode .nav-tabs,.dark-mode .divider,.dark-mode .data-item:not(:last-child),.dark-mode .nk-footer,.dark-mode .nav-switch-s2 .nav-link,.dark-mode .user-avatar-multiple .user-avatar{border-color:#23364e !important}.dark-mode .select2-search--dropdown .select2-search__field{color:#b6c6e3}.dark-mode .card,.dark-mode .code-block,.dark-mode .alert-pro,.dark-mode .modal-content,.dark-mode .toast,.dark-mode .toastr{box-shadow:0px 1px 3px 0px rgba(0,0,0,.4)}.dark-mode .toast-header{color:#8094ae}.dark-mode .toast,.dark-mode .toast-header{border-color:#263b55;background:#1b2633}.dark-mode .table-active,.dark-mode .table-active>th,.dark-mode .table-active>td,.dark-mode .table-hover tbody tr:hover,.dark-mode .code-block .prettyprint,.dark-mode .prettyprint,.dark-mode .list-group-item,.dark-mode .example-spacing-pd>div>span,.dark-mode .form-file-label::after,.dark-mode .ql-picker-options,.dark-mode .data-more:before,.dark-mode .ui-state-hover,.dark-mode .note-editor.note-frame .note-statusbar,.dark-mode .note-editor.note-airframe .note-statusbar,.dark-mode .swal2-popup,.dark-mode .select2-container--default .select2-results__option--highlighted[aria-selected],.dark-mode .select2-container--default .select2-results__option[aria-selected=true],.dark-mode .select2-container--default .select2-selection--multiple .select2-selection__choice,.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field,.dark-mode .example-width>div,.dark-mode .example-height>div,.dark-mode .example-border>div,.dark-mode .example-spacing>div{background:#101924}.dark-mode .tox .tox-tbtn:hover,.dark-mode .tox .tox-collection--list .tox-collection__item--active,.dark-mode .tox .tox-mbtn--active,.dark-mode .tox .tox-mbtn:focus:not(:disabled),.dark-mode .tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active),.dark-mode .tox .tox-collection--list .tox-collection__item--enabled{background:#0a0f16}.dark-mode .list-group-item{color:#b6c6e3}.dark-mode .icon-overlap li{border-color:#18212d}.dark-mode .card,.dark-mode .kanban-add-task,.dark-mode .kanban-board-header,.dark-mode .kanban-item{background:#18212d;border-color:#212d3d}.dark-mode .accordion,.dark-mode .form-clip,.dark-mode .form-text-hint,.dark-mode .card-aside,.dark-mode .code-block,.dark-mode .alert-pro,.dark-mode .modal-content,.dark-mode .toastr,.dark-mode .toggle-content,.dark-mode .nav-switch-s2 .nav-link:hover,.dark-mode .nav-switch-s2 .nav-link:focus,.dark-mode .nav-switch-s2 .nav-link.active,.dark-mode .select2-container--default .select2-selection--single,.dark-mode .select2-container--default .select2-selection--multiple,.dark-mode .select2-dropdown,.dark-mode .form-file-label,.dark-mode .form-select,.dark-mode .popover,.dark-mode .search-wrap,.dark-mode .form-control,.dark-mode div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .dark-mode input,.dark-mode .dual-listbox .dual-listbox__search,.dual-listbox .dark-mode .dual-listbox__search,.dark-mode .form-label-outlined,.dark-mode .input-mail,.dark-mode .page-link,.dark-mode .ui-timepicker-standard,.dark-mode .note-editor,.dark-mode .note-toolbar,.dark-mode .tox .tox-edit-area__iframe,.dark-mode .tox .tox-menubar,.dark-mode .tox-toolbar-overlord,.dark-mode .tox .tox-toolbar,.dark-mode .tox .tox-toolbar__primary,.dark-mode .tox .tox-toolbar__overflow,.dark-mode .tox .tox-statusbar,.dark-mode .tox .tox-menu,.dark-mode .datepicker table tr td.today,.dark-mode .datepicker table tr td.today:hover,.dark-mode .datepicker table tr td.today.disabled,.dark-mode .datepicker table tr td.today.disabled:hover,.dark-mode .datepicker table tr td.day:hover,.dark-mode .datepicker table tr td.day.focused,.dark-mode .datepicker .datepicker-switch:hover,.dark-mode .datepicker .prev:hover,.dark-mode .datepicker .next:hover,.dark-mode .datepicker tfoot tr th:hover{background:#18212d !important}.dark-mode .accordion-item{background:#18212d !important;border-color:#23364e !important}.dark-mode .clipboard-success-message{background:rgba(24,33,45,.9)}.dark-mode .tagify__tag>div::before,.dark-mode .tagify__tag:hover:not([readonly]) div::before{box-shadow:0 0 0 1.1em #101924 inset}.dark-mode .popover-header{background-color:#1d2937}.dark-mode .popover{box-shadow:0 0 20px -5px rgba(0,0,0,.6)}.dark-mode .bs-popover-top>.popover-arrow::before,.dark-mode .bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{border-top-color:#23364e !important}.dark-mode .bs-popover-top>.popover-arrow::after,.dark-mode .bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-top-color:#18212d !important}.dark-mode .bs-popover-bottom>.popover-arrow::before,.dark-mode .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{border-bottom-color:#23364e !important}.dark-mode .bs-popover-bottom>.popover-arrow::after,.dark-mode .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-bottom-color:#18212d !important}.dark-mode .bs-popover-end>.popover-arrow::before,.dark-mode .bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{border-right-color:#23364e !important}.dark-mode .bs-popover-end>.popover-arrow::after,.dark-mode .bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-right-color:#18212d !important}.dark-mode .bs-popover-start>.popover-arrow::before,.dark-mode .bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{border-left-color:#23364e !important}.dark-mode .bs-popover-start>.popover-arrow::after,.dark-mode .bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-left-color:#18212d !important}.dark-mode .team-info li span:last-child,.dark-mode .team-statistics li span:first-child,.dark-mode .project-progress-percent,.dark-mode .kanban-title-content .title,.dark-mode .card-tools-nav li a:hover,.dark-mode .card-tools-nav li a.active,.dark-mode .card-tools-nav li.active a,.dark-mode .card-amount .amount,.dark-mode .accordion-head .title,.dark-mode .form-file-label::after,.dark-mode .input-mail,.dark-mode .form-control,.dark-mode div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .dark-mode input,.dark-mode .dual-listbox .dual-listbox__search,.dual-listbox .dark-mode .dual-listbox__search,.dark-mode .form-control:focus,.dark-mode .form-label,.dark-mode .form-label-outlined,.dark-mode .input-group-text,.dark-mode .table .table-light th,.dark-mode .table-hover tbody tr:hover,.dark-mode .close,.dark-mode .close:hover,.dark-mode .user-name,.dark-mode .nk-news-text p,.dark-mode .data-item:hover .icon,.dark-mode .accordion-icon{color:#fff !important}.dark-mode .close{text-shadow:0 1px 0 #18212d}.dark-mode .close:focus{outline:none !important}.dark-mode .is-theme .nk-menu-icon,.dark-mode .nk-block-des,.dark-mode .card-title p,.dark-mode .nk-sale-data .sub-title,.dark-mode .link-check li span,.dark-mode .data-value,.dark-mode .form-file-label,.dark-mode .form-select,.dark-mode .form-control-select-multiple .form-select option,.dark-mode .select2-container--default .select2-selection--single .select2-selection__rendered,.dark-mode .select2-container--default .select2-selection--multiple .select2-selection__rendered,.dark-mode .ui-timepicker-standard a,.dark-mode .note-placeholder,.dark-mode [class*=knob],.dark-mode .tox .tox-tbtn:hover,.dark-mode .tox .tox-statusbar a,.dark-mode .tox .tox-statusbar__path-item,.dark-mode .tox .tox-statusbar__wordcount,.dark-mode .tox-collection__item-label>*,.dark-mode .nk-quick-nav-icon,.dark-mode .dropzone .dz-message span,.dark-mode .datepicker table tr td.today,.dark-mode .datepicker table tr td.today:hover,.dark-mode .datepicker table tr td.today.disabled,.dark-mode .datepicker table tr td.today.disabled:hover,.dark-mode .datepicker table tr td.day:hover,.dark-mode .datepicker table tr td.day.focused,.dark-mode .page-link,.dark-mode .alert-pro,.dark-mode .nk-news-text p span,.dark-mode .language-item,.dark-mode .nk-tb-list .tb-lead-sub,.dark-mode .nk-tb-list .tb-amount-sub{color:#8094ae !important}.dark-mode .tox .tox-collection__item-accessory{color:#526484}.dark-mode .nk-menu-link,.dark-mode .link-dark,.dark-mode .nk-menu-main .nk-menu-sub .nk-menu-link,.dark-mode .link-list a{color:#8094ae}.dark-mode .nk-menu-link:hover,.dark-mode .link-dark:hover,.dark-mode .nk-menu-main .nk-menu-sub .nk-menu-link:hover,.dark-mode .link-list a:hover{color:#0fac81}.dark-mode .nk-menu-badge{color:#dbdfea;background:#2d3f55}.dark-mode .is-dark .nk-menu-badge{color:#cfeee6}.dark-mode .is-dark .nk-menu-badge{color:#6fcdb3}.dark-mode .ql-picker.ql-expanded .ql-picker-label,.dark-mode .active>.nk-menu-link,.dark-mode .is-theme .nk-menu-link:hover .nk-menu-icon,.dark-mode .is-theme .nk-menu-item.active>.nk-menu-link .nk-menu-icon,.dark-mode .is-theme .nk-menu-item.current-menu>.nk-menu-link .nk-menu-icon,.dark-mode .is-theme .nk-menu-sub .nk-menu-link:hover,.dark-mode .is-theme .nk-menu-sub .active>.nk-menu-link,.dark-mode .page-link:hover{color:#0fac81 !important}.dark-mode .nk-menu-hr,.dark-mode .nk-menu-main .nk-menu-sub,.dark-mode .nk-sidebar .nk-menu>li .nk-menu-sub .nk-menu-sub,.dark-mode .user-avatar-group .user-avatar{border-color:#23364e}.dark-mode .table .table-light th,.dark-mode .page-item.disabled .page-link,.dark-mode .page-link:hover,.dark-mode .tb-odr-head,.dark-mode .tb-tnx-head,.dark-mode .custom-control-input[disabled]~.custom-control-label::before,.dark-mode .custom-control-input:disabled~.custom-control-label::before{background-color:#2b3c51 !important}.dark-mode .progress,.dark-mode .data-head,.dark-mode .custom-control-label::before,.dark-mode .input-group-text,.dark-mode .nk-msg-profile-toggle{background-color:#243244 !important}.dark-mode .nk-msg-profile-toggle,.dark-mode .custom-control-label::before,.dark-mode .form-control,.dark-mode div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .dark-mode input,.dark-mode .dual-listbox .dual-listbox__search,.dual-listbox .dark-mode .dual-listbox__search,.dark-mode .input-mail,.dark-mode .form-file-label,.dark-mode .input-group-text,.dark-mode .form-select,.dark-mode .swal2-input,.dark-mode .swal2-file,.dark-mode .swal2-textarea,.dark-mode .select2-container--default .select2-selection--single,.dark-mode .select2-container--default .select2-selection--multiple,.dark-mode .select2-dropdown,.dark-mode .note-popover .popover-content .dropdown-style>li[aria-label=pre],.dark-mode .note-editor .note-toolbar .dropdown-style>li[aria-label=pre],.dark-mode .link-bdr-t,.link-tidy .dark-mode li+li,.link-list-opt .dark-mode li+li,.link-list-plain .dark-mode li+li,.dark-mode .link-check+.link-check,.dark-mode .link-tidy li+li,.dark-mode .link-list+.link-list,.dark-mode .link-list-opt li+li,.dark-mode .link-list-plain li,.dark-mode .link-list-plain li+li{border-color:#3b526f !important}.dark-mode .custom-switch .custom-control-label::after{background-color:#869fbe !important}.dark-mode .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff !important}.dark-mode .custom-control-input:checked~.custom-control-label::before{background-color:#0fac81 !important;border-color:#0fac81 !important}.dark-mode .btn-trigger:before,.dark-mode .btn-trigger.active:hover:before,.dark-mode .nk-quick-nav-icon:before{background-color:#070a0f}.dark-mode .dropdown-menu{background-color:#1b2633;border-color:#2a3a4e;box-shadow:0 3px 20px 1px rgba(0,0,0,.4)}.dark-mode .dropdown-menu-s1{border-top-color:#0fac81}.dark-mode .link-list-plain a,.dark-mode .link-list-opt a,.dark-mode .link-check li a{color:#b6c6e3}.dark-mode .link-list-plain a:hover,.dark-mode .link-list-opt a:hover,.dark-mode .link-check li a:hover{background:#2d3f55}.dark-mode .border-transparent{border-color:rgba(0,0,0,0) !important}.dark-mode .note-editor .btn,.dark-mode .note-editor .dual-listbox .dual-listbox__button,.dual-listbox .dark-mode .note-editor .dual-listbox__button,.dark-mode .ql-picker,.dark-mode .tox .tox-tbtn__select-label,.dark-mode .tox .tox-mbtn__select-label,.dark-mode .lead-text span,.dark-mode .data-list-s2 .data-label,.dark-mode .btn-trigger,.dark-mode .dropdown .btn.btn-icon:not(.btn-light),.dark-mode .dropdown .dual-listbox .btn-icon.dual-listbox__button:not(.btn-light),.dual-listbox .dark-mode .dropdown .btn-icon.dual-listbox__button:not(.btn-light),.dark-mode .dropdown .dt-buttons .btn.btn-secondary:not(.btn-light),.dt-buttons .dark-mode .dropdown .btn.btn-secondary:not(.btn-light),.dark-mode .dropdown .dual-listbox .dt-buttons .dual-listbox__button.btn-secondary:not(.btn-light),.dual-listbox .dt-buttons .dark-mode .dropdown .dual-listbox__button.btn-secondary:not(.btn-light),.dark-mode .dropdown .dt-buttons .dual-listbox .dual-listbox__button.btn-secondary:not(.btn-light),.dt-buttons .dual-listbox .dark-mode .dropdown .dual-listbox__button.btn-secondary:not(.btn-light),.dark-mode .list-step li.list-step-done{color:#8094ae}.dark-mode .ql-fill,.dark-mode .ql-stroke.ql-fill,.dark-mode .tox .tox-tbtn svg{fill:#8094ae}.dark-mode .ql-stroke{stroke:#8094ae}.dark-mode .swal2-validation-message{background:#23364e}.dark-mode .team-info li span:first-child,.dark-mode .team-statistics li span:last-child,.dark-mode .project-progress-task,.dark-mode .table,.dark-mode .nk-tb-list,.dark-mode .nk-tb-list .tb-amount span,.dark-mode .nk-tb-list .tb-amount .currency,.dark-mode .tb-tnx-item .tb-tnx-total,.dark-mode .tb-odr-item .tb-odr-total,.dark-mode .user-balance-sub span,.dark-mode .dropdown-menu,.dark-mode .pln,.dark-mode .overline-title,.dark-mode .nk-block-des strong,.dark-mode .data-item:hover .data-value,.dark-mode .data-item:hover .data-label,.dark-mode .nk-notification-text,.dark-mode .profile-ud-value,.dark-mode .bq-note-meta span>span,.dark-mode .tagify__tag>div,.dark-mode .popover-body,.dark-mode .input-mail::placeholder,.dark-mode .list-apps-title{color:#b6c6e3}.dark-mode .tb-tnx-item{border-color:#23364e !important}.dark-mode .nk-notification-text span,.dark-mode .is-unread .chat-context .text{color:#dfe9fe}.dark-mode .nav-tabs .nav-link{color:#b6c6e3}.dark-mode .nav-tabs .nav-link.active{color:#0fac81}.dark-mode .nav-tabs .nav-link:hover{color:#fff}.dark-mode .link-list-menu a,.dark-mode .list-plain a{color:#8094ae}.dark-mode .link-list-menu a:hover,.dark-mode .link-list-menu a.active,.dark-mode .list-plain a:hover,.dark-mode .list-plain a.active{color:#0fac81}.dark-mode .nav-switch .nav-link.active,.dark-mode .list-apps a:hover .list-apps-title{color:#fff}.dark-mode .nk-tb-item:not(.nk-tb-head):hover,.dark-mode .nk-tb-item:not(.nk-tb-head).seleted{box-shadow:0 2px 15px -4px rgba(0,0,0,.7)}.dark-mode .nk-tb-item:hover .nk-tb-action-hidden,.dark-mode .bq-note-text,.dark-mode .nk-tb-item:not(.nk-tb-head):hover,.dark-mode .nk-tb-item:not(.nk-tb-head).seleted{background:#141c26}.dark-mode .nk-apps-sidebar .dropdown-menu .lead-text,.dark-mode .list-step li.list-step-current,.dark-mode .nk-tb-list .tb-lead,.dark-mode .nk-tb-list .tb-amount,.dark-mode .nk-support-content .title,.dark-mode .nk-sale-data .amount{color:#fff}.dark-mode .nk-support-content .time,.dark-mode .page-item.disabled .page-link,.dark-mode .card-hint,.dark-mode .list-step li{color:#526484}.dark-mode .nk-order-ovwg-data .title .icon,.dark-mode .timeline-item:not(:last-child):before,.dark-mode .timeline-status.is-outline:after{background-color:#2a3a4e}.dark-mode .nk-footer{background-color:#101924}.dark-mode .nk-order-ovwg-data .info strong,.dark-mode .user-activity .amount,.dark-mode .invest-data-history .amount,.dark-mode .analytic-data .amount,.dark-mode .traffic-channel-data .amount,.dark-mode .analytics-map-data .amount,.dark-mode .device-status-data .amount,.dark-mode .invest-ov .amount,.dark-mode .profile-balance-amount .number{color:#fff}.dark-mode .invest-ov:not(:last-child){border-color:#3b526f}.dark-mode .nk-header .dropdown-menu .lead-text,.dark-mode .nk-sidebar-bar .dropdown-menu .lead-text{color:#fff}.dark-mode .nk-header-fixed{background:#101924}.dark-mode .nk-sidebar-bar.is-theme,.dark-mode .nk-sidebar-bar,.dark-mode .nk-menu-hr,.dark-mode .nk-sidebar-main,.dark-mode .nk-header-fixed{border-color:#203247}.dark-mode .nk-sidebar-bar.is-theme,.dark-mode .nk-sidebar-bar{background:#101924}.dark-mode .nk-sidebar-bar.is-dark+.is-dark,.dark-mode .nk-sidebar-main.is-theme,.dark-mode .nk-sidebar-main{background:#121b28}.dark-mode .apps-menu .active>.nk-menu-link{background-color:#0b1219}.dark-mode .nk-chat-aside-user .title,.dark-mode .nk-file-name,.dark-mode .nk-file-name-text a.title,.dark-mode .is-unread .nk-ibx-context-text .heading,.dark-mode .chat-profile-settings .custom-control-sm .custom-control-label,.dark-mode .attach-info,.dark-mode .profile-stats .amount,.dark-mode .is-unread .chat-from .name{color:#fff}.dark-mode .chat-upload-option{background-color:#18212d}.dark-mode .nk-fmg-menu-item .icon,.dark-mode .nk-ibx-menu-item .icon{color:#8094ae}.dark-mode .nk-fmg-menu-text,.dark-mode .nk-ibx-label-text,.dark-mode .nk-ibx-menu-text,.dark-mode .attach-item a,.dark-mode .user-contacts li,.dark-mode .nk-ibx-context-text .heading,.dark-mode .chat-option-link:hover .lead-text,.dark-mode .chat-from .name,.dark-mode .user-plan-title{color:#b6c6e3}.dark-mode .nk-file-name-text a.title:hover,.dark-mode .active>.nk-fmg-menu-item .icon,.dark-mode .active .nk-ibx-menu-text,.dark-mode .active .nk-ibx-menu-item .icon{color:#0fac81}.dark-mode .nk-chat,.dark-mode .nk-chat-aside,.dark-mode .nk-chat-profile,.dark-mode .nk-chat-head,.dark-mode .chat-profile-group,.dark-mode .nk-fmg,.dark-mode .nk-fmg-aside,.dark-mode .nk-fmg-body-head,.dark-mode .nk-fmg-switch,.dark-mode .nk-files-view-grid .nk-file,.dark-mode .nk-files-view-group .nk-file,.dark-mode .nk-ibx,.dark-mode .nk-ibx-aside,.dark-mode .nk-ibx-head,.dark-mode .nk-ibx-item,.dark-mode .nk-reply-form,.dark-mode .nk-reply-form-header,.dark-mode .nk-reply-form-tools,.dark-mode .nk-reply-form-field:not(:last-child),.dark-mode .nk-msg,.dark-mode .nk-msg-head,.dark-mode .nk-msg-profile,.dark-mode .attach-files,.dark-mode .attach-foot,.dark-mode .nk-msg-item:not(:last-child),.dark-mode .nk-msg-aside,.dark-mode .nk-msg-nav,.dark-mode .nk-msg-nav .search-wrap,.dark-mode .nk-msg-body,.dark-mode .nk-fmg-body,.dark-mode .nk-chat-body,.dark-mode .nk-ibx-body,.dark-mode .nk-files-group>.title,.dark-mode .nk-file-share-header,.dark-mode .nk-files-view-list .nk-file>div{border-color:#23364e !important}.dark-mode .nk-block-subhead,.dark-mode .data-list-s2 .data-head,.dark-mode .nk-profile-toggle,.dark-mode .nk-profile-content,.dark-mode .user-account-links{border-color:#2b3748}.dark-mode .nk-upload-item,.dark-mode .dropzone{border-color:#354358 !important}.dark-mode .data-list-s2 .data-head,.dark-mode .nk-header-search .form-control,.dark-mode .nk-header-search div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .dark-mode .nk-header-search input,.dark-mode .nk-header-search .dual-listbox .dual-listbox__search,.dual-listbox .dark-mode .nk-header-search .dual-listbox__search{background:rgba(0,0,0,0) !important}.dark-mode .chat-sap-meta:before,.dark-mode .chat-sap-meta:after,.dark-mode .nk-profile-content,.dark-mode .active>.nk-fmg-menu-item,.dark-mode .nk-fmg-menu-item:hover,.dark-mode .nk-ibx-status,.dark-mode .nk-ibx-reply-item:not(:last-child):after,.dark-mode .nk-reply-meta-info:before,.dark-mode .nk-reply-meta-info:after{background:#23364e}.dark-mode .nk-chat-aside,.dark-mode .nk-chat-profile,.dark-mode .nk-chat-head,.dark-mode .chat-msg,.dark-mode .nk-chat-editor,.dark-mode .nk-chat-blank,.dark-mode .nk-chat-editor .form-control,.dark-mode .nk-chat-editor div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .dark-mode .nk-chat-editor input,.dark-mode .nk-chat-editor .dual-listbox .dual-listbox__search,.dual-listbox .dark-mode .nk-chat-editor .dual-listbox__search,.dark-mode .nk-fmg-aside,.dark-mode .nk-fmg-body,.dark-mode .nk-fmg-body .form-control,.dark-mode .nk-fmg-body div.dataTables_wrapper div.dataTables_filter input,div.dataTables_wrapper div.dataTables_filter .dark-mode .nk-fmg-body input,.dark-mode .nk-fmg-body .dual-listbox .dual-listbox__search,.dual-listbox .dark-mode .nk-fmg-body .dual-listbox__search,.dark-mode .nk-fmg-body-head,.dark-mode .nk-files-view-grid .nk-file,.dark-mode .nk-files-view-group .nk-file,.dark-mode .nk-ibx-aside,.dark-mode .nk-ibx-item,.dark-mode .nk-ibx-view,.dark-mode .nk-msg-head,.dark-mode .nk-msg-profile,.dark-mode .nk-fmg-switch{background:#18212d}.dark-mode .nk-ibx-status .progress{background:#18212d !important}.dark-mode .nk-chat-panel,.dark-mode .chat-item:hover,.dark-mode .chat-item.current,.dark-mode .chat-item:hover .chat-actions,.dark-mode .chat-members .user-card:hover,.dark-mode .chat-members .user-actions,.dark-mode .nk-profile-content,.dark-mode .nk-msg-item.active,.dark-mode .nk-msg-item.current,.dark-mode .channel-list a:hover,.dark-mode .channel-list a.active{background:#0d141d !important}.dark-mode .fav-list .user-avatar:after{background:#445f80}.dark-mode .nk-files-view-list .nk-file.selected>div{background:rgba(0,0,0,0)}.dark-mode .nk-files-view-list .nk-file.selected{background:#23364e}.dark-mode .nk-ibx-item:not(.no-hover):hover,.dark-mode .nk-ibx-item.active,.dark-mode .nk-ibx-item:hover .ibx-actions-hidden,.dark-mode .nk-ibx-item:hover .ibx-actions,.dark-mode .nk-ibx-label>li:hover,.dark-mode .nk-ibx-contact>li:hover,.dark-mode .nk-ibx-menu li.active,.dark-mode .nk-ibx-menu li:hover,.dark-mode .dot-label:after,.dark-mode .attach-foot,.dark-mode .nk-reply-from,.dark-mode .nk-reply-entry.note,.dark-mode .nk-msg-aside,.dark-mode .nk-msg-nav,.dark-mode .nk-files-view-list .nk-file>div{background:#101924}.dark-mode .is-unread .nk-ibx-context-text,.dark-mode .nk-upload-info{color:#dfe9fe}.dark-mode .nk-reply-msg-excerpt,.dark-mode .nk-ibx-context-text,.dark-mode .user-contacts li .icon,.dark-mode .nk-reply-tools .date{color:#8094ae}.dark-mode .is-unread .nk-msg-sender .name{color:#fff}.dark-mode .nk-reply-meta-info,.dark-mode .nk-reply-from{color:#7a8faa}.dark-mode .nk-reply-meta-info span,.dark-mode .nk-reply-meta-info strong,.dark-mode .nk-reply-meta-info .who,.dark-mode .channel-list a{color:#b6c6e3}.dark-mode .nk-reply-meta-info .whom{color:#0fac81}.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button,.dual-listbox .dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button{color:#b6c6e3;border-color:#23364e}.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:disabled,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:disabled,.dual-listbox .dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:disabled{color:#b6c6e3;border-color:#23364e}.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:hover,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:hover,.dual-listbox .dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:hover,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:focus,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:focus,.dual-listbox .dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:focus{color:#fff;background:#101924;border-color:#23364e}.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn:focus,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .dual-listbox__button:focus,.dual-listbox .dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox__button:focus{box-shadow:0 0 0 .2rem rgba(35,54,78,.5)}.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .btn.active,.dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .dual-listbox .active.dual-listbox__button,.dual-listbox .dark-mode .fc .fc-toolbar.fc-header-toolbar .fc-toolbar-chunk .active.dual-listbox__button{color:#0fac81;border-color:#23364e;background:#101924;box-shadow:inset 0 0 4px -1px rgba(35,54,78,.25)}.dark-mode .fc-day{color:#b6c6e3}.dark-mode .fc-day-other{color:#8094ae}.dark-mode .fc-list-day,.dark-mode .fc-col-header-cell{color:#fff}.dark-mode .fc .fc-list-empty{background:#101924}.dark-mode .fc-timegrid-event-harness-inset .fc-timegrid-event,.dark-mode .fc-timegrid-event.fc-event-mirror{box-shadow:0px 0px 0px 1px #101924}.dark-mode a.fc-event-primary-dim{background-color:#17363a !important;border-color:#17363a !important}.dark-mode .modal-header.fc-event-primary-dim{background-color:#17363a !important;border-color:#102528 !important}.dark-mode span.fc-event-primary-dim .dot{background-color:#17363a !important}.dark-mode .fc-event-primary-dim:not(a) .fc-list-event-dot{background-color:#17363a !important}.dark-mode a.fc-event-success-dim{background-color:#193e40 !important;border-color:#193e40 !important}.dark-mode .modal-header.fc-event-success-dim{background-color:#193e40 !important;border-color:#122c2e !important}.dark-mode span.fc-event-success-dim .dot{background-color:#193e40 !important}.dark-mode .fc-event-success-dim:not(a) .fc-list-event-dot{background-color:#193e40 !important}.dark-mode a.fc-event-info-dim{background-color:#163948 !important;border-color:#163948 !important}.dark-mode .modal-header.fc-event-info-dim{background-color:#163948 !important;border-color:#102a34 !important}.dark-mode span.fc-event-info-dim .dot{background-color:#163948 !important}.dark-mode .fc-event-info-dim:not(a) .fc-list-event-dot{background-color:#163948 !important}.dark-mode a.fc-event-warning-dim{background-color:#393828 !important;border-color:#393828 !important}.dark-mode .modal-header.fc-event-warning-dim{background-color:#393828 !important;border-color:#2a291d !important}.dark-mode span.fc-event-warning-dim .dot{background-color:#393828 !important}.dark-mode .fc-event-warning-dim:not(a) .fc-list-event-dot{background-color:#393828 !important}.dark-mode a.fc-event-danger-dim{background-color:#372931 !important;border-color:#372931 !important}.dark-mode .modal-header.fc-event-danger-dim{background-color:#372931 !important;border-color:#281e24 !important}.dark-mode span.fc-event-danger-dim .dot{background-color:#372931 !important}.dark-mode .fc-event-danger-dim:not(a) .fc-list-event-dot{background-color:#372931 !important}.dark-mode a.fc-event-secondary-dim{background-color:#1e2938 !important;border-color:#1e2938 !important}.dark-mode .modal-header.fc-event-secondary-dim{background-color:#1e2938 !important;border-color:#151d27 !important}.dark-mode span.fc-event-secondary-dim .dot{background-color:#1e2938 !important}.dark-mode .fc-event-secondary-dim:not(a) .fc-list-event-dot{background-color:#1e2938 !important}.dark-mode a.fc-event-dark-dim{background-color:#19232f !important;border-color:#19232f !important}.dark-mode .modal-header.fc-event-dark-dim{background-color:#19232f !important;border-color:#10171e !important}.dark-mode span.fc-event-dark-dim .dot{background-color:#19232f !important}.dark-mode .fc-event-dark-dim:not(a) .fc-list-event-dot{background-color:#19232f !important}.dark-mode a.fc-event-blue-dim{background-color:#21334c !important;border-color:#21334c !important}.dark-mode .modal-header.fc-event-blue-dim{background-color:#21334c !important;border-color:#19273a !important}.dark-mode span.fc-event-blue-dim .dot{background-color:#21334c !important}.dark-mode .fc-event-blue-dim:not(a) .fc-list-event-dot{background-color:#21334c !important}.dark-mode a.fc-event-azure-dim{background-color:#182e4c !important;border-color:#182e4c !important}.dark-mode .modal-header.fc-event-azure-dim{background-color:#182e4c !important;border-color:#122239 !important}.dark-mode span.fc-event-azure-dim .dot{background-color:#182e4c !important}.dark-mode .fc-event-azure-dim:not(a) .fc-list-event-dot{background-color:#182e4c !important}.dark-mode a.fc-event-indigo-dim{background-color:#1d2742 !important;border-color:#1d2742 !important}.dark-mode .modal-header.fc-event-indigo-dim{background-color:#1d2742 !important;border-color:#151d30 !important}.dark-mode span.fc-event-indigo-dim .dot{background-color:#1d2742 !important}.dark-mode .fc-event-indigo-dim:not(a) .fc-list-event-dot{background-color:#1d2742 !important}.dark-mode a.fc-event-purple-dim{background-color:#282c4d !important;border-color:#282c4d !important}.dark-mode .modal-header.fc-event-purple-dim{background-color:#282c4d !important;border-color:#1f223c !important}.dark-mode span.fc-event-purple-dim .dot{background-color:#282c4d !important}.dark-mode .fc-event-purple-dim:not(a) .fc-list-event-dot{background-color:#282c4d !important}.dark-mode a.fc-event-pink-dim{background-color:#3b2b3f !important;border-color:#3b2b3f !important}.dark-mode .modal-header.fc-event-pink-dim{background-color:#3b2b3f !important;border-color:#2d2130 !important}.dark-mode span.fc-event-pink-dim .dot{background-color:#3b2b3f !important}.dark-mode .fc-event-pink-dim:not(a) .fc-list-event-dot{background-color:#3b2b3f !important}.dark-mode a.fc-event-orange-dim{background-color:#3b3533 !important;border-color:#3b3533 !important}.dark-mode .modal-header.fc-event-orange-dim{background-color:#3b3533 !important;border-color:#2d2927 !important}.dark-mode span.fc-event-orange-dim .dot{background-color:#3b3533 !important}.dark-mode .fc-event-orange-dim:not(a) .fc-list-event-dot{background-color:#3b3533 !important}.dark-mode a.fc-event-teal-dim{background-color:#193a3d !important;border-color:#193a3d !important}.dark-mode .modal-header.fc-event-teal-dim{background-color:#193a3d !important;border-color:#12292b !important}.dark-mode span.fc-event-teal-dim .dot{background-color:#193a3d !important}.dark-mode .fc-event-teal-dim:not(a) .fc-list-event-dot{background-color:#193a3d !important}.dark-mode .code-block,.dark-mode .card-preview,.dark-mode .card .card-inner+.table .tb-tnx-head,.dark-mode .card-bordered,.dark-mode .kanban-add-task,.dark-mode .kanban-board-header,.dark-mode .kanban-item,.dark-mode .kanban-board .kanban-drag:empty,.dark-mode .accordion-item:not(:last-child) .accordion-head,.dark-mode .accordion-item:not(:last-child) .accordion-inner,.dark-mode .accordion-item:last-child .accordion-inner,.dark-mode .nk-download{border-color:#23364e}.dark-mode .accordion:not(.accordion-s2):not(.accordion-s3){border-color:#23364e !important}.dark-mode .card.bg-light .card-header,.dark-mode .card.bg-lighter .card-header,.dark-mode .dual-listbox .card.dual-listbox__item:hover .card-header,.dual-listbox .dark-mode .card.dual-listbox__item:hover .card-header{background:rgba(0,0,0,.2)}.dark-mode .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col{border-top-color:#23364e;border-bottom-color:#23364e}.dark-mode .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:first-child{border-left-color:#23364e}.dark-mode .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:last-child{border-right-color:#23364e}.dark-mode .modal-footer.bg-light{background-color:#141c26 !important}.dark-mode .kanban-primary{border-top-color:#0fac81}.dark-mode .kanban-success{border-top-color:#1ee0ac}.dark-mode .kanban-info{border-top-color:#09c2de}.dark-mode .kanban-warning{border-top-color:#f4bd0e}.dark-mode .kanban-danger{border-top-color:#e85347}.dark-mode.ui-bordered .card,.dark-mode.ui-bordered .code-block,.dark-mode.ui-bordered .accordion:not(.accordion-s2):not(.accordion-s3),.dark-mode.ui-bordered .card .card-inner+.table .tb-tnx-head,.dark-mode.ui-bordered .card-bordered,.dark-mode.ui-bordered .nk-download{border-color:#23364e}.dark-mode.ui-bordered .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col{border-top-color:#23364e;border-bottom-color:#23364e}.dark-mode.ui-bordered .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:first-child{border-left-color:#23364e}.dark-mode.ui-bordered .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:last-child{border-right-color:#23364e}.dark-mode .nk-order-ovwg-data.buy{border-color:#1c9479}.dark-mode .nk-order-ovwg-data.sell{border-color:#13745f}.dark-mode .nk-sidebar-overlay{background:rgba(0,0,0,.6)}.dark-mode .toggle-overlay,.dark-mode .nk-chat-profile-overlay{background:rgba(7,10,15,.75)}.dark-mode .swal2-container.swal2-backdrop-show{background:rgba(0,0,0,.85)}.dark-mode .modal-backdrop{opacity:.9;background:rgba(0,0,0,.9)}.dark-mode .ui-bordered .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col:first-child,.dark-mode .ui-bordered .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col{border-color:#23364e !important}.dark-mode .is-compact:not(:hover) .nk-menu-heading:not(:first-child):before{background-color:#23364e}.dark-mode .nk-add-product{background:#1f2b3a;box-shadow:-10px 15px 30px 5px rgba(0,0,0,.4)}.dark-mode .nk-download{background-color:#18212d}.dark-mode .nk-ecwg .amount,.dark-mode .nk-store-statistics .count,.dark-mode .nk-top-products .title,.dark-mode .nk-top-products .amount,.dark-mode .nk-tb-list .tb-product .title{color:#fff}.dark-mode .nk-ecwg8-legends .title,.dark-mode .nk-ecwg7-legends .title{color:#ecf2ff}.dark-mode .invoice-wrap{background-color:#18212d;border-color:#23364e}.dark-mode .invoice-bills .table tfoot{border-color:#23364e}.dark-mode .nk-tb-list.is-separate .nk-tb-item>.nk-tb-col,.dark-mode .nk-tb-list.is-separate .nk-tb-item:hover .nk-tb-action-hidden{background-color:#18212d}.dark-mode .nk-tb-list .tb-product .title{color:#fff}.dark-mode .dual-listbox .dual-listbox__available,.dark-mode .dual-listbox .dual-listbox__selected{border-color:#3b526f}.dark-mode .dual-listbox .dual-listbox__title{border-left-color:#3b526f;border-right-color:#3b526f;border-top-color:#3b526f}.dark-mode .dual-listbox .dual-listbox__item{border-bottom-color:#3b526f}.dark-mode .input-group-addon{background-color:#1f2b3a;border-color:#3b526f}.dark-mode .border-light{border-color:#23364e !important}.dark-mode div.dt-button-info{background-color:#18212d}.dark-mode div.dt-button-info h2,.dark-mode div.dt-button-info .h2{background-color:#131a23}.dark-mode div.dt-button-info h2,.dark-mode div.dt-button-info .h2{border-color:#23364e}.dark-mode .dropzone{background:#101924}.dark-mode .image-control .custom-control-input:checked~.custom-control-label:before{border-color:#3b526f}.dark-mode .image-control .custom-control-label{background-color:#1f2b3a}.dark-mode .custom-control-pro .custom-control-label{background-color:#18212d;border-color:#3b526f}.dark-mode .custom-control.color-control .custom-control-label::before{background:rgba(0,0,0,0) !important}.dark-mode .slick-dots li button{background-color:#101924}.dark-mode .slick-dots li.slick-active button{background-color:#0fac81}.dark-mode .slick-next,.dark-mode .slick-prev{color:#fff;background:#18212d;border-color:#23364e}.dark-mode .slick-next:hover,.dark-mode .slick-prev:hover{color:#fff;background:#0fac81;border-color:#0fac81}.dark-mode .slick-disabled .slick-next,.dark-mode .slick-disabled .slick-prev{color:#dbdfea}.dark-mode .slick-disabled .slick-next:hover,.dark-mode .slick-disabled .slick-prev:hover{color:#dbdfea;background:#18212d;border-color:#23364e}.dark-mode .pricing-head{border-color:#23364e}.dark-mode .pricing-amount .amount{color:#fff}.dark-mode .product-title a{color:#fff}.dark-mode .product-gallery{border-color:#23364e}.dark-mode .product-gallery .slider-nav .slider-item .thumb{border-color:#23364e}.dark-mode .product-gallery .slider-nav .slider-item.slick-current .thumb{border-color:#0fac81}.dark-mode .invoice-wrap{background-color:#18212d;border-color:#23364e}.dark-mode .invoice-bills .table tfoot{border-color:#23364e}.dark-mode .nk-add-product{background:#101924;box-shadow:-10px 15px 30px 5px rgba(0,0,0,.4)}.dark-mode .noUi-target{background:#33465f}.dark-mode .noUi-handle:before,.dark-mode .noUi-handle:after{background:#688ebc}.dark-mode .noUi-handle{border-color:#688ebc;background:#080d12}.dark-mode .noUi-active{box-shadow:inset 0 0 1px #000,inset 0 1px 7px #000,0 3px 6px -3px #000}.dark-mode input:-webkit-autofill,.dark-mode input:-webkit-autofill:hover,.dark-mode input:-webkit-autofill:focus,.dark-mode textarea:-webkit-autofill,.dark-mode textarea:-webkit-autofill:hover,.dark-mode textarea:-webkit-autofill:focus,.dark-mode select:-webkit-autofill,.dark-mode select:-webkit-autofill:hover,.dark-mode select:-webkit-autofill:focus{-webkit-text-fill-color:#fff;transition:background-color 5000s ease-in-out 0s}@media(max-width: 576px){.dark-mode .nk-block-tools-toggle .toggle-expand-content{background-color:#243244}}.nk-sticky-toolbar{position:fixed;border:3px solid #fff;top:50%;background:#fff;z-index:600;right:0;border-radius:6px 0 0 6px;border-right:0;box-shadow:-2px 0 24px -2px rgba(43,55,72,.15)}.nk-sticky-toolbar li:not(:last-child){border-bottom:2px solid #fff}.nk-sticky-toolbar li a{display:flex;height:36px;width:36px;align-items:center;justify-content:center;font-size:18px;color:inherit}.demo-layout{background-color:rgba(85,155,251,.1);color:#559bfb}.demo-thumb{background-color:rgba(30,224,172,.1);color:#1ee0ac}.demo-settings{background-color:rgba(129,107,255,.1);color:#816bff}.demo-purchase{background-color:rgba(255,99,165,.1);color:#ff63a5}@media(min-width: 576px){.nk-sticky-toolbar{top:30%}.nk-sticky-toolbar li a{font-size:20px;height:44px;width:44px}.nk-sticky-toolbar li.demo-thumb a{font-size:22px}}.nk-demo-panel{position:fixed;right:0;top:0;width:320px;max-width:calc(100vw - 40px);max-height:100vh;height:100vh;z-index:9999;background-color:#fff;box-shadow:0 3px 12px 1px rgba(43,55,72,.15);padding:0 0 1.5rem}.nk-demo-panel+.toggle-overlay{z-index:9000;background:rgba(16,25,36,.05)}.dark-mode .nk-demo-panel{box-shadow:0 0 35px 5px rgba(0,0,0,.5)}.nk-demo-head{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;text-transform:uppercase;border-bottom:1px solid #e5e9f2}.nk-demo-head h6,.nk-demo-head .h6{font-size:13px;letter-spacing:.1em}.nk-demo-list{overflow:auto;max-height:calc(100vh - 60px)}.nk-demo-title{display:block;font-size:.875rem;padding:.675rem 0;text-align:center;color:#526484;border-top:none;border-radius:0 0 4px 4px}.nk-demo-title .subtitle{display:block;color:#8094ae;font-size:11px}.nk-demo-item{padding:2rem 1.5rem 1rem;border-bottom:1px solid #e5e9f2}.nk-demo-item a{display:block}.nk-demo-item a:hover .nk-demo-title{color:#0fac81}.nk-demo-image{border:1px solid #e5e9f2;border-radius:4px 4px 0 0;padding:1rem 1rem 0 1rem}.nk-demo-image img{border-radius:inherit}.nk-demo-note{background:#f5f6fa;padding-bottom:2rem}@media(min-width: 576px){.nk-demo-item{padding:2rem 2rem 1rem}.nk-demo-head{padding:15px 2rem 13px}.nk-demo-note{padding-bottom:2rem}}@media(min-width: 768px){.nk-demo-panel-2x{width:640px}.nk-demo-panel-2x .nk-demo-list .simplebar-content{display:flex;flex-wrap:wrap}.nk-demo-panel-2x .nk-demo-list .simplebar-content .nk-demo-item{width:50%}.nk-demo-panel-2x .nk-demo-list .simplebar-content .nk-demo-item:not(:nth-child(2n)){border-right:1px solid #e5e9f2}}.nk-opt-panel{overflow:auto;max-height:calc(100vh - 84px)}.nk-opt-reset{padding:1.5rem 1.5rem 1.5rem}.nk-opt-set{padding:1.5rem 1.5rem 1.5rem}.nk-opt-set:not(:last-child){border-bottom:1px solid #e5e9f2}.nk-opt-set-title{padding:0 0 .5rem;text-transform:uppercase;color:#8094ae;letter-spacing:2px;font-weight:500;font-size:11px}.nk-opt-list{padding:0;flex-wrap:wrap;margin:-0.5rem;display:flex}.nk-opt-list+.nk-opt-set-title{margin-top:1.25rem}.nk-opt-item{width:33%;text-align:center;padding:.5rem}.nk-opt-item:not(.active):not(.disabled){cursor:pointer}.nk-opt-item.active{cursor:default}.nk-opt-item.disabled{pointer-events:none}.nk-opt-item.disabled>.nk-opt-item-name{opacity:.5}.col-2x .nk-opt-item{width:50%}.col-4x .nk-opt-item{width:25%}.nk-opt-item-name{font-weight:400;color:#526484;font-size:12px;letter-spacing:.02em}.nk-opt-item-name small,.nk-opt-item-name .small{font-size:11px}.dark-mode .nk-opt-item-name{color:#8094ae}.nk-opt-item-bg{background:#fff;width:100%;height:32px;border:1px solid #dbdfea;padding:3px;margin-bottom:5px;position:relative;display:block;border-radius:2px;transition:all .3s}.dark-mode .nk-opt-item-bg{border-color:#3c4d62}.nk-opt-item-bg>span:not(.nk-opt-item-name){display:block;background:#526484;height:100%;border-radius:1px}.nk-opt-item-bg>span:not(.nk-opt-item-name).bg-theme{background:#07523d !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).bg-light{background:#ebeef2 !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).bg-lighter,.dual-listbox .nk-opt-item-bg>span.dual-listbox__item:not(.nk-opt-item-name):hover{background:#f5f6fa !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).bg-dark{background:#101924 !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).theme-light{background:linear-gradient(90deg, #f5f6fa 0%, #f5f6fa 50%, #e5e9f2 50%, #e5e9f2 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).theme-dark{background:linear-gradient(90deg, #1f2b3a 0%, #1f2b3a 50%, #101924 50%, #101924 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-default{background:linear-gradient(90deg, #07523d 0%, #07523d 28%, #0fac81 28%, #0fac81 72%, #abe2d3 72%, #abe2d3 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-purple{background:linear-gradient(90deg, #4700e8 0%, #4700e8 28%, #854fff 28%, #854fff 72%, #e7dcff 72%, #e7dcff 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-green{background:linear-gradient(90deg, #074e3b 0%, #074e3b 28%, #0fac81 28%, #0fac81 72%, #cfeee6 72%, #cfeee6 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-blue{background:linear-gradient(90deg, #0144a0 0%, #0144a0 30%, #0971fe 30%, #0971fe 72%, #cee3ff 72%, #cee3ff 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-egyptian{background:linear-gradient(90deg, #1a3767 0%, #1a3767 30%, #2e62b9 30%, #2e62b9 72%, #d5e0f1 72%, #d5e0f1 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-red{background:linear-gradient(90deg, #ab0e21 0%, #ab0e21 30%, #ee3148 30%, #ee3148 72%, #fcd6da 72%, #fcd6da 100%) !important}.nk-opt-item-bg>span:not(.nk-opt-item-name).skin-bluelite{background:linear-gradient(90deg, #001cfe 0%, #001cfe 28%, #6576ff 28%, #6576ff 72%, #e0e4ff 72%, #e0e4ff 100%) !important}.nk-opt-item-bg:hover,.nk-opt-item-bg:focus{border-color:#b7c2d0}.active>.nk-opt-item-bg{border-color:#0fac81;box-shadow:0 0 0 2px rgba(15,172,129,.2)}.active>.nk-opt-item-bg:after{font-family:"Nioicon";content:"";position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);color:#fff;font-size:.875rem}.active>.nk-opt-item-bg.is-light:after{color:#101924}.only-text>.nk-opt-item-bg{margin-bottom:0;height:28px}.only-text>.nk-opt-item-bg:after{display:none}.disabled>.nk-opt-item-bg{border-color:#e5e9f2 !important}.dark-mode .disabled>.nk-opt-item-bg{border-color:#3c4d62 !important}.nk-opt-item-bg>.nk-opt-item-name{color:#364a63;font-size:10px;line-height:1;text-transform:uppercase;font-weight:500;letter-spacing:.12em;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100%}.dark-mode .nk-opt-item-bg>.nk-opt-item-name{color:#b6c6e3}.active>.nk-opt-item-bg>.nk-opt-item-name{color:#0fac81;font-weight:700}@media(min-width: 576px){.nk-opt-set,.nk-opt-reset{padding-left:2rem;padding-right:2rem}}.pmo-lv{position:fixed;left:50%;bottom:-50px;max-width:90%;width:590px;transform:translate(-50%, 100%);transition:all .4s;background:#fff;border-radius:50px;box-shadow:0 0 40px -2px rgba(31,43,58,.25);z-index:9999}.pmo-lv.active{transform:translate(-50%, 0);bottom:20px;transition-delay:1s}.pmo-lv.pmo-dark{background:#0564e5}.pmo-close{color:#364a63;border-radius:50%;height:36px;width:36px;line-height:38px;background:rgba(183,194,208,.6);text-align:center;display:inline-block;position:absolute;top:50%;margin-top:-18px;right:8px;font-size:16px;z-index:99}.pmo-close:hover{color:#fff;background:#526484}.pmo-dark .pmo-close{background:rgba(31,43,58,.3);color:#fff}.pmo-dark .pmo-close:hover{background:rgba(31,43,58,.5)}.pmo-wrap{display:flex;padding:.875rem 3.5rem .875rem 1.5rem;align-items:center;border-radius:50px;transition:all 300ms}.pmo-wrap:hover{transform:translateX(5px)}.pmo-text{font-family:Roboto,sans-serif;font-size:14px;line-height:22px;font-weight:500;letter-spacing:.02em;color:#e85347;transition:color .4s}.pmo-text .ni{font-size:20px;display:inline-block;vertical-align:middle;margin-left:.125rem;margin-top:-3px}.pmo-dark .pmo-text{color:#fff}.pmo-st{position:fixed;right:25px;bottom:0;display:flex;align-items:center;transition:all .4s;border-radius:30px;transform:translateY(100%);box-shadow:0 5px 40px 0 rgba(16,25,36,.3);color:#fff;background:#e85347;z-index:99999}.pmo-st:active,.pmo-st:focus,.pmo-st:hover{color:#fff}.pmo-st.pmo-dark{background:#0564e5}.pmo-st.active{bottom:25px;transform:translateY(0);transition-delay:.4s}.pmo-st-img{width:60px;height:60px;border-radius:30px;padding:18px 18px;transition:all .4s}.pmo-st-text{padding:14px 0;height:60px;width:0;overflow:hidden;white-space:nowrap;text-transform:uppercase;letter-spacing:.1em;font-weight:600;transition:all .4s;visibility:hidden;font-size:12px;line-height:16px}.pmo-st:hover .pmo-st-text{width:220px;visibility:visible;padding:14px 14px 14px 0}@media(max-width: 575px){.promo-cov-st{display:none}}.dark-mode .nk-demo-panel{background-color:#18212d}.dark-mode .nk-opt-item-bg{background-color:#101924}.dark-mode .nk-demo-head,.dark-mode .nk-opt-set:not(:last-child),.dark-mode .nk-demo-item:not(:last-child){border-color:#23364e}.dark-mode .nk-demo-title{color:#dfe9fe}.dark-mode .nk-demo-image{border-color:#23364e}/*! END @iO */ \ No newline at end of file diff --git a/public/dgaAdmin/assets/css/editors/quill.css b/public/dgaAdmin/assets/css/editors/quill.css new file mode 100644 index 0000000..5f2d046 --- /dev/null +++ b/public/dgaAdmin/assets/css/editors/quill.css @@ -0,0 +1,1117 @@ +/*! Quill Editor */ + +.ql-container { + box-sizing: border-box; + font-size: 13px; + height: 100%; + margin: 0px; + position: relative; + min-height: 160px +} + +.ql-container.ql-disabled .ql-tooltip { + visibility: hidden +} + +.ql-container.ql-disabled .ql-editor ul[data-checked]>li::before { + pointer-events: none +} + +.ql-clipboard { + left: -100000px; + height: 1px; + overflow-y: hidden; + position: absolute; + top: 50% +} + +.ql-clipboard p { + margin: 0; + padding: 0 +} + +.ql-editor { + box-sizing: border-box; + line-height: 1.42; + height: 100%; + outline: none; + overflow-y: auto; + padding: 12px 15px; + tab-size: 4; + -moz-tab-size: 4; + text-align: left; + white-space: pre-wrap; + word-wrap: break-word +} + +.ql-editor>* { + cursor: text +} + +.ql-editor p, +.ql-editor ol, +.ql-editor ul, +.ql-editor pre, +.ql-editor blockquote, +.ql-editor h1, +.ql-editor h2, +.ql-editor h3, +.ql-editor h4, +.ql-editor h5, +.ql-editor h6 { + margin: 0; + padding: 0; + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9 +} + +.ql-editor ol, +.ql-editor ul { + padding-left: 1.5em +} + +.ql-editor ol>li, +.ql-editor ul>li { + list-style-type: none +} + +.ql-editor ul>li::before { + content: "•" +} + +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none +} + +.ql-editor ul[data-checked=true]>li *, +.ql-editor ul[data-checked=false]>li * { + pointer-events: all +} + +.ql-editor ul[data-checked=true]>li::before, +.ql-editor ul[data-checked=false]>li::before { + color: #777; + cursor: pointer; + pointer-events: all +} + +.ql-editor ul[data-checked=true]>li::before { + content: "☑" +} + +.ql-editor ul[data-checked=false]>li::before { + content: "☐" +} + +.ql-editor li::before { + display: inline-block; + white-space: nowrap; + width: 1.2em +} + +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: .3em; + text-align: right +} + +.ql-editor li.ql-direction-rtl::before { + margin-left: .3em; + margin-right: -1.5em +} + +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em +} + +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 1.5em +} + +.ql-editor ol li { + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; + counter-increment: list-0 +} + +.ql-editor ol li:before { + content: counter(list-0, decimal) ". " +} + +.ql-editor ol li.ql-indent-1 { + counter-increment: list-1 +} + +.ql-editor ol li.ql-indent-1:before { + content: counter(list-1, lower-alpha) ". " +} + +.ql-editor ol li.ql-indent-1 { + counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9 +} + +.ql-editor ol li.ql-indent-2 { + counter-increment: list-2 +} + +.ql-editor ol li.ql-indent-2:before { + content: counter(list-2, lower-roman) ". " +} + +.ql-editor ol li.ql-indent-2 { + counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9 +} + +.ql-editor ol li.ql-indent-3 { + counter-increment: list-3 +} + +.ql-editor ol li.ql-indent-3:before { + content: counter(list-3, decimal) ". " +} + +.ql-editor ol li.ql-indent-3 { + counter-reset: list-4 list-5 list-6 list-7 list-8 list-9 +} + +.ql-editor ol li.ql-indent-4 { + counter-increment: list-4 +} + +.ql-editor ol li.ql-indent-4:before { + content: counter(list-4, lower-alpha) ". " +} + +.ql-editor ol li.ql-indent-4 { + counter-reset: list-5 list-6 list-7 list-8 list-9 +} + +.ql-editor ol li.ql-indent-5 { + counter-increment: list-5 +} + +.ql-editor ol li.ql-indent-5:before { + content: counter(list-5, lower-roman) ". " +} + +.ql-editor ol li.ql-indent-5 { + counter-reset: list-6 list-7 list-8 list-9 +} + +.ql-editor ol li.ql-indent-6 { + counter-increment: list-6 +} + +.ql-editor ol li.ql-indent-6:before { + content: counter(list-6, decimal) ". " +} + +.ql-editor ol li.ql-indent-6 { + counter-reset: list-7 list-8 list-9 +} + +.ql-editor ol li.ql-indent-7 { + counter-increment: list-7 +} + +.ql-editor ol li.ql-indent-7:before { + content: counter(list-7, lower-alpha) ". " +} + +.ql-editor ol li.ql-indent-7 { + counter-reset: list-8 list-9 +} + +.ql-editor ol li.ql-indent-8 { + counter-increment: list-8 +} + +.ql-editor ol li.ql-indent-8:before { + content: counter(list-8, lower-roman) ". " +} + +.ql-editor ol li.ql-indent-8 { + counter-reset: list-9 +} + +.ql-editor ol li.ql-indent-9 { + counter-increment: list-9 +} + +.ql-editor ol li.ql-indent-9:before { + content: counter(list-9, decimal) ". " +} + +.ql-editor .ql-indent-1:not(.ql-direction-rtl) { + padding-left: 3em +} + +.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { + padding-left: 4.5em +} + +.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 3em +} + +.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 4.5em +} + +.ql-editor .ql-indent-2:not(.ql-direction-rtl) { + padding-left: 6em +} + +.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { + padding-left: 7.5em +} + +.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 6em +} + +.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 7.5em +} + +.ql-editor .ql-indent-3:not(.ql-direction-rtl) { + padding-left: 9em +} + +.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { + padding-left: 10.5em +} + +.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 9em +} + +.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 10.5em +} + +.ql-editor .ql-indent-4:not(.ql-direction-rtl) { + padding-left: 12em +} + +.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { + padding-left: 13.5em +} + +.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 12em +} + +.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 13.5em +} + +.ql-editor .ql-indent-5:not(.ql-direction-rtl) { + padding-left: 15em +} + +.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { + padding-left: 16.5em +} + +.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 15em +} + +.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 16.5em +} + +.ql-editor .ql-indent-6:not(.ql-direction-rtl) { + padding-left: 18em +} + +.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { + padding-left: 19.5em +} + +.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 18em +} + +.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 19.5em +} + +.ql-editor .ql-indent-7:not(.ql-direction-rtl) { + padding-left: 21em +} + +.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { + padding-left: 22.5em +} + +.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 21em +} + +.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 22.5em +} + +.ql-editor .ql-indent-8:not(.ql-direction-rtl) { + padding-left: 24em +} + +.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { + padding-left: 25.5em +} + +.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 24em +} + +.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 25.5em +} + +.ql-editor .ql-indent-9:not(.ql-direction-rtl) { + padding-left: 27em +} + +.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { + padding-left: 28.5em +} + +.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 27em +} + +.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 28.5em +} + +.ql-editor .ql-video { + display: block; + max-width: 100% +} + +.ql-editor .ql-video.ql-align-center { + margin: 0 auto +} + +.ql-editor .ql-video.ql-align-right { + margin: 0 0 0 auto +} + +.ql-editor .ql-bg-black { + background-color: #000 +} + +.ql-editor .ql-bg-red { + background-color: #e60000 +} + +.ql-editor .ql-bg-orange { + background-color: #f90 +} + +.ql-editor .ql-bg-yellow { + background-color: #ff0 +} + +.ql-editor .ql-bg-green { + background-color: #008a00 +} + +.ql-editor .ql-bg-blue { + background-color: #06c +} + +.ql-editor .ql-bg-purple { + background-color: #93f +} + +.ql-editor .ql-color-white { + color: #fff +} + +.ql-editor .ql-color-red { + color: #e60000 +} + +.ql-editor .ql-color-orange { + color: #f90 +} + +.ql-editor .ql-color-yellow { + color: #ff0 +} + +.ql-editor .ql-color-green { + color: #008a00 +} + +.ql-editor .ql-color-blue { + color: #06c +} + +.ql-editor .ql-color-purple { + color: #93f +} + +.ql-editor .ql-font-serif { + font-family: Georgia, Times New Roman, serif +} + +.ql-editor .ql-font-monospace { + font-family: Monaco, Courier New, monospace +} + +.ql-editor .ql-size-small { + font-size: .75em +} + +.ql-editor .ql-size-large { + font-size: 1.5em +} + +.ql-editor .ql-size-huge { + font-size: 2.5em +} + +.ql-editor .ql-direction-rtl { + direction: rtl; + text-align: inherit +} + +.ql-editor .ql-align-center { + text-align: center +} + +.ql-editor .ql-align-justify { + text-align: justify +} + +.ql-editor .ql-align-right { + text-align: right +} + +.ql-editor.ql-blank::before { + color: rgba(0, 0, 0, .6); + content: attr(data-placeholder); + font-style: italic; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px +} + +.ql-toolbar:after { + clear: both; + content: ""; + display: table +} + +.ql-toolbar button { + background: none; + border: none; + cursor: pointer; + display: inline-block; + float: left; + height: 24px; + padding: 3px 5px; + width: 28px +} + +.ql-toolbar button svg { + float: left; + height: 100% +} + +.ql-toolbar button:active:hover { + outline: none +} + +.ql-toolbar input.ql-image[type=file] { + display: none +} + +.ql-toolbar button:hover, +.ql-toolbar button:focus, +.ql-toolbar button.ql-active, +.ql-toolbar .ql-picker-label:hover, +.ql-toolbar .ql-picker-label.ql-active, +.ql-toolbar .ql-picker-item:hover, +.ql-toolbar .ql-picker-item.ql-selected { + color: #0fac81 +} + +.ql-toolbar button:hover .ql-fill, +.ql-toolbar button:focus .ql-fill, +.ql-toolbar button.ql-active .ql-fill, +.ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { + fill: #0fac81 +} + +.ql-toolbar button:hover .ql-stroke, +.ql-toolbar button:focus .ql-stroke, +.ql-toolbar button.ql-active .ql-stroke, +.ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-toolbar button:hover .ql-stroke-miter, +.ql-toolbar button:focus .ql-stroke-miter, +.ql-toolbar button.ql-active .ql-stroke-miter, +.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { + stroke: #0fac81 +} + +@media(pointer: coarse) { + .ql-toolbar button:hover:not(.ql-active) { + color: #526484 + } + .ql-toolbar button:hover:not(.ql-active) .ql-fill, + .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { + fill: #526484 + } + .ql-toolbar button:hover:not(.ql-active) .ql-stroke, + .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { + stroke: #526484 + } +} + +.ql-hidden { + display: none +} + +.ql-out-bottom, +.ql-out-top { + visibility: hidden +} + +.ql-tooltip { + position: absolute; + transform: translateY(10px) +} + +.ql-tooltip a { + cursor: pointer; + text-decoration: none +} + +.ql-tooltip.ql-flip { + transform: translateY(-10px) +} + +.ql-formats { + display: inline-block; + vertical-align: middle +} + +.ql-formats:after { + clear: both; + content: ""; + display: table +} + +.ql-stroke { + fill: none; + stroke: #526484; + stroke-linecap: round; + stroke-linejoin: round; + stroke-width: 2 +} + +.ql-stroke-miter { + fill: none; + stroke: #526484; + stroke-miterlimit: 10; + stroke-width: 2 +} + +.ql-fill, +.ql-stroke.ql-fill { + fill: #526484 +} + +.ql-empty { + fill: none +} + +.ql-even { + fill-rule: evenodd +} + +.ql-thin, +.ql-stroke.ql-thin { + stroke-width: 1 +} + +.ql-transparent { + opacity: .4 +} + +.ql-direction svg:last-child { + display: none +} + +.ql-direction.ql-active svg:last-child { + display: inline +} + +.ql-direction.ql-active svg:first-child { + display: none +} + +.ql-editor h1 { + font-size: 2em +} + +.ql-editor h2 { + font-size: 1.5em +} + +.ql-editor h3 { + font-size: 1.17em +} + +.ql-editor h4 { + font-size: 1em +} + +.ql-editor h5 { + font-size: .83em +} + +.ql-editor h6 { + font-size: .67em +} + +.ql-editor a { + text-decoration: underline +} + +.ql-editor blockquote { + margin-bottom: 5px; + margin-top: 5px; + border-left: 4px solid #dbdfea; + padding-left: 16px +} + +.ql-editor code, +.ql-editor pre { + background-color: #f0f0f0; + border-radius: 3px +} + +.ql-editor pre { + white-space: pre-wrap; + margin-bottom: 5px; + margin-top: 5px; + padding: 5px 10px +} + +.ql-editor code { + font-size: 85%; + padding: 2px 4px +} + +.ql-editor pre.ql-syntax { + background-color: #23241f; + color: #f8f8f2; + overflow: visible +} + +.ql-editor img { + max-width: 100% +} + +.ql-picker { + color: #526484; + display: inline-block; + float: left; + font-size: 14px; + font-weight: 500; + height: 24px; + position: relative; + vertical-align: middle +} + +.ql-picker-label { + cursor: pointer; + display: inline-block; + height: 100%; + padding-left: 8px; + padding-right: 2px; + position: relative; + width: 100% +} + +.ql-picker-label:focus { + box-shadow: none; + border: none; + outline: none +} + +.ql-picker-label::before { + display: inline-block; + line-height: 22px +} + +.ql-picker-options { + background-color: #fff; + display: none; + min-width: 100%; + padding: 4px 16px; + position: absolute; + white-space: nowrap; + border-radius: 4px +} + +.ql-picker-options .ql-picker-item { + cursor: pointer; + display: block; + padding-bottom: 5px; + padding-top: 5px +} + +.ql-picker.ql-expanded .ql-picker-label { + color: #1c2b46; + z-index: 2 +} + +.ql-picker.ql-expanded .ql-picker-label .ql-fill { + fill: #8094ae +} + +.ql-picker.ql-expanded .ql-picker-label .ql-stroke { + stroke: #8094ae +} + +.ql-picker.ql-expanded .ql-picker-options { + display: block; + margin-top: -1px; + top: 100%; + z-index: 1 +} + +.ql-color-picker, +.ql-icon-picker { + width: 28px +} + +.ql-color-picker .ql-picker-label, +.ql-icon-picker .ql-picker-label { + padding: 2px 4px +} + +.ql-color-picker .ql-picker-label svg, +.ql-icon-picker .ql-picker-label svg { + right: 4px +} + +.ql-icon-picker .ql-picker-options { + padding: 4px 0px +} + +.ql-icon-picker .ql-picker-item { + height: 24px; + width: 24px; + padding: 2px 4px +} + +.ql-color-picker .ql-picker-options { + padding: 8px; + width: 158px +} + +.ql-color-picker .ql-picker-item { + border: 1px solid rgba(0, 0, 0, 0); + float: left; + height: 16px; + margin: 2px; + padding: 0px; + width: 16px +} + +.ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { + position: absolute; + margin-top: -9px; + right: 0; + top: 50%; + width: 18px +} + +.ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""])::before, +.ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""])::before, +.ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""])::before, +.ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""])::before, +.ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""])::before, +.ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""])::before { + content: attr(data-label) +} + +.ql-picker.ql-header { + width: 98px +} + +.ql-picker.ql-header .ql-picker-label::before, +.ql-picker.ql-header .ql-picker-item::before { + content: "Normal" +} + +.ql-picker.ql-header .ql-picker-label[data-value="1"]::before, +.ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + content: "Heading 1" +} + +.ql-picker.ql-header .ql-picker-label[data-value="2"]::before, +.ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + content: "Heading 2" +} + +.ql-picker.ql-header .ql-picker-label[data-value="3"]::before, +.ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + content: "Heading 3" +} + +.ql-picker.ql-header .ql-picker-label[data-value="4"]::before, +.ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + content: "Heading 4" +} + +.ql-picker.ql-header .ql-picker-label[data-value="5"]::before, +.ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + content: "Heading 5" +} + +.ql-picker.ql-header .ql-picker-label[data-value="6"]::before, +.ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + content: "Heading 6" +} + +.ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + font-size: 2em +} + +.ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + font-size: 1.5em +} + +.ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + font-size: 1.17em +} + +.ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + font-size: 1em +} + +.ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + font-size: .83em +} + +.ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + font-size: .67em +} + +.ql-picker.ql-font { + width: 108px +} + +.ql-picker.ql-font .ql-picker-label::before, +.ql-picker.ql-font .ql-picker-item::before { + content: "Sans Serif" +} + +.ql-picker.ql-font .ql-picker-label[data-value=serif]::before, +.ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + content: "Serif" +} + +.ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, +.ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + content: "Monospace" +} + +.ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + font-family: Georgia, Times New Roman, serif +} + +.ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + font-family: Monaco, Courier New, monospace +} + +.ql-picker.ql-size { + width: 98px +} + +.ql-picker.ql-size .ql-picker-label::before, +.ql-picker.ql-size .ql-picker-item::before { + content: "Normal" +} + +.ql-picker.ql-size .ql-picker-label[data-value=small]::before, +.ql-picker.ql-size .ql-picker-item[data-value=small]::before { + content: "Small" +} + +.ql-picker.ql-size .ql-picker-label[data-value=large]::before, +.ql-picker.ql-size .ql-picker-item[data-value=large]::before { + content: "Large" +} + +.ql-picker.ql-size .ql-picker-label[data-value=huge]::before, +.ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + content: "Huge" +} + +.ql-picker.ql-size .ql-picker-item[data-value=small]::before { + font-size: 10px +} + +.ql-picker.ql-size .ql-picker-item[data-value=large]::before { + font-size: 18px +} + +.ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + font-size: 32px +} + +.ql-color-picker.ql-background .ql-picker-item { + background-color: #fff +} + +.ql-color-picker.ql-color .ql-picker-item { + background-color: #000 +} + +.ql-toolbar { + border: 1px solid #e5e9f2; + border-radius: 4px 4px 0 0; + box-sizing: border-box; + padding: 8px; + padding-bottom: 0 +} + +.ql-toolbar .ql-formats { + margin-right: 15px; + padding-bottom: 8px +} + +.ql-toolbar .ql-picker-label { + border: 1px solid rgba(0, 0, 0, 0) +} + +.ql-toolbar .ql-picker-options { + border: 1px solid rgba(0, 0, 0, 0); + box-shadow: 0 .125rem .25rem rgba(43, 55, 72, .15) +} + +.ql-toolbar .ql-picker.ql-expanded .ql-picker-options { + border-color: #e5e9f2 +} + +.ql-toolbar .ql-color-picker .ql-picker-item.ql-selected, +.ql-toolbar .ql-color-picker .ql-picker-item:hover { + border-color: #3c4d62 +} + +.ql-toolbar+.ql-container { + border-top: 0px +} + +.ql-tooltip { + background-color: #fff; + border: 1px solid #e5e9f2; + box-shadow: 0px 0px 5px #ddd; + color: #526484; + padding: 5px 12px; + white-space: nowrap +} + +.ql-tooltip::before { + content: "Visit URL:"; + line-height: 26px; + margin-right: 8px +} + +.ql-tooltip input[type=text] { + display: none; + border: 1px solid #e5e9f2; + font-size: 13px; + height: 26px; + margin: 0px; + padding: 3px 5px; + width: 170px +} + +.ql-tooltip a.ql-preview { + display: inline-block; + max-width: 200px; + overflow-x: hidden; + text-overflow: ellipsis; + vertical-align: top +} + +.ql-tooltip a.ql-action::after { + content: "Edit"; + border-right: 1px solid #e5e9f2; + margin-left: 16px; + padding-right: 8px +} + +.ql-tooltip a.ql-remove::before { + content: "Remove"; + margin-left: 8px +} + +.ql-tooltip a { + line-height: 26px +} + +.ql-tooltip.ql-editing a.ql-preview, +.ql-tooltip.ql-editing a.ql-remove { + display: none +} + +.ql-tooltip.ql-editing input[type=text] { + display: inline-block +} + +.ql-tooltip.ql-editing a.ql-action::after { + border-right: 0px; + content: "Save"; + padding-right: 0px +} + +.ql-tooltip[data-mode=link]::before { + content: "Enter link:" +} + +.ql-tooltip[data-mode=formula]::before { + content: "Enter formula:" +} + +.ql-tooltip[data-mode=video]::before { + content: "Enter video:" +} + +a { + color: #0fac81 +} + +.ql-container { + border: 1px solid #e5e9f2; + border-radius: 0 0 4px 4px +} \ No newline at end of file diff --git a/public/dgaAdmin/assets/css/editors/summernote.css b/public/dgaAdmin/assets/css/editors/summernote.css new file mode 100644 index 0000000..253af34 --- /dev/null +++ b/public/dgaAdmin/assets/css/editors/summernote.css @@ -0,0 +1 @@ +/*! Summernote Editor */@font-face{font-family:"summernote";font-style:normal;font-weight:400;font-display:auto;src:url("../../fonts/summernote.eot?#iefix") format("embedded-opentype"),url("../../fonts/summernote.woff2") format("woff2"),url("../../fonts/summernote.woff") format("woff"),url("../../fonts/summernote.ttf") format("truetype")}[class^=note-icon]:before,[class*=" note-icon"]:before{display:inline-block;font-family:"summernote";font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align::before{content:""}.note-icon-align-center::before{content:""}.note-icon-align-indent::before{content:""}.note-icon-align-justify::before{content:""}.note-icon-align-left::before{content:""}.note-icon-align-outdent::before{content:""}.note-icon-align-right::before{content:""}.note-icon-arrow-circle-down::before{content:""}.note-icon-arrow-circle-left::before{content:""}.note-icon-arrow-circle-right::before{content:""}.note-icon-arrow-circle-up::before{content:""}.note-icon-arrows-alt::before{content:""}.note-icon-arrows-h::before{content:""}.note-icon-arrows-v::before{content:""}.note-icon-bold::before{content:""}.note-icon-caret::before{content:""}.note-icon-chain-broken::before{content:""}.note-icon-circle::before{content:""}.note-icon-close::before{content:""}.note-icon-code::before{content:""}.note-icon-col-after::before{content:""}.note-icon-col-before::before{content:""}.note-icon-col-remove::before{content:""}.note-icon-eraser::before{content:""}.note-icon-float-left::before{content:""}.note-icon-float-none::before{content:""}.note-icon-float-right::before{content:""}.note-icon-font::before{content:""}.note-icon-frame::before{content:""}.note-icon-italic::before{content:""}.note-icon-link::before{content:""}.note-icon-magic::before{content:""}.note-icon-menu-check::before{content:""}.note-icon-minus::before{content:""}.note-icon-orderedlist::before{content:""}.note-icon-pencil::before{content:""}.note-icon-picture::before{content:""}.note-icon-question::before{content:""}.note-icon-redo::before{content:""}.note-icon-rollback::before{content:""}.note-icon-row-above::before{content:""}.note-icon-row-below::before{content:""}.note-icon-row-remove::before{content:""}.note-icon-special-character::before{content:""}.note-icon-square::before{content:""}.note-icon-strikethrough::before{content:""}.note-icon-subscript::before{content:""}.note-icon-summernote::before{content:""}.note-icon-superscript::before{content:""}.note-icon-table::before{content:""}.note-icon-text-height::before{content:""}.note-icon-trash::before{content:""}.note-icon-underline::before{content:""}.note-icon-undo::before{content:""}.note-icon-unorderedlist::before{content:""}.note-icon-video::before{content:""}.note-frame{-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000;font-family:sans-serif;border-radius:4px}.note-toolbar{padding:0 .5rem;border-bottom:1px solid #dbdfea;color:#526484;background-color:#fff;border-color:#dbdfea;border-top-left-radius:4px;border-top-right-radius:4px}.note-btn-group{position:relative;display:inline-block;margin:5px}.note-btn-group>.note-btn-group{margin-right:0}.note-btn-group>.note-btn:first-child{margin-left:0}.note-btn-group .note-btn+.note-btn,.note-btn-group .note-btn+.note-btn-group,.note-btn-group .note-btn-group+.note-btn,.note-btn-group .note-btn-group+.note-btn-group{margin-left:-1px}.note-btn-group>.note-btn:not(:first-child),.note-btn-group>.note-btn-group:not(:first-child)>.note-btn{border-top-left-radius:0;border-bottom-left-radius:0}.note-btn-group>.note-btn:not(:last-child):not(.dropdown-toggle),.note-btn-group>.note-btn-group:not(:last-child)>.note-btn{border-top-right-radius:0;border-bottom-right-radius:0}.note-btn-group.open>.note-dropdown{display:block}.note-btn{display:inline-block;font-weight:400;margin-bottom:0;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid #dbdfea;white-space:nowrap;outline:0;color:#333;background-color:#fff;border-color:#dbdfea;padding:5px 10px;font-size:14px;line-height:1.4;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.note-btn:focus,.note-btn.focus{color:#333;background-color:#ebebeb;border-color:#dbdfea}.note-btn:hover{color:#333;background-color:#ebebeb;border-color:#dbdfea}.note-btn.disabled:focus,.note-btn.disabled.focus,.note-btn[disabled]:focus,.note-btn[disabled].focus,fieldset[disabled] .note-btn:focus,fieldset[disabled] .note-btn.focus{background-color:#fff;border-color:#dbdfea}.note-btn:hover,.note-btn:focus,.note-btn.focus{color:#333;text-decoration:none;border:1px solid #dbdfea;background-color:#ebebeb;outline:0}.note-btn:active,.note-btn.active{outline:0;background-image:none;color:#526484;text-decoration:none;border:1px solid #dbdfea;background-color:#ebebeb;outline:0}.note-btn.disabled,.note-btn[disabled],fieldset[disabled] .note-btn{cursor:not-allowed;-webkit-opacity:.65;-khtml-opacity:.65;-moz-opacity:.65;opacity:.65;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=65);filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.note-btn>span.note-icon-caret:first-child{margin-left:-1px}.note-btn>span.note-icon-caret:nth-child(2){padding-left:3px;margin-right:-5px}.note-btn .note-recent-color{padding:.125rem .25rem;border-radius:2px}.note-btn-primary{background:#854fff;color:#fff}.note-btn-primary:hover,.note-btn-primary:focus,.note-btn-primary.focus{color:#fff;text-decoration:none;border:1px solid #dbdfea;background-color:#fa6362;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.note-btn-block{display:block;width:100%}.note-btn-block+.note-btn-block{margin-top:5px}input[type=submit].note-btn-block,input[type=reset].note-btn-block,input[type=button].note-btn-block{width:100%}button.close{padding:0;cursor:pointer;background:rgba(0,0,0,0);border:0;-webkit-appearance:none}.close{float:right;font-size:1rem;line-height:1;color:#526484;opacity:.5;transition:.3s;margin:.25rem 0}.close:hover{opacity:1}.note-dropdown{position:relative}.note-color .dropdown-toggle{width:30px;padding-left:5px}.note-dropdown-menu{display:none;min-width:250px;position:absolute;top:100%;left:0;z-index:1000;float:left;text-align:left;background:#fff;border:1px solid #e5e9f2;padding:.5rem 0;background-clip:padding-box;box-shadow:0 3px 12px 1px rgba(58,34,114,.15);border-radius:4px}.note-dropdown-menu>*:last-child{margin-right:0}.note-fontsize .note-dropdown-menu{min-width:70px}.note-dropdown-menu .note-btn-group{margin:5px !important}.note-btn-group.open .note-dropdown-menu{display:block}.note-dropdown-item{display:block;padding:.25rem 1rem}.note-fontsize .note-dropdown-item{padding:.25rem .5rem;font-size:13px}.note-dropdown-item[aria-label=pre]{border-bottom:1px solid #dbdfea;margin-bottom:.5rem;padding-bottom:.75rem}a.note-dropdown-item,a.note-dropdown-item:hover{color:#000;text-decoration:none}.note-modal{position:fixed;left:0;right:0;top:0;bottom:0;z-index:1050;-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);filter:alpha(opacity=100);display:none}.note-modal.open{display:flex;align-items:center}.note-modal-content{position:relative;width:auto;margin:30px 20px;border:1px solid #dbdfea;background:#fff;background-clip:border-box;outline:0;border-radius:5px;box-shadow:0 3px 12px 1px rgba(43,55,72,.15)}.note-modal-header{padding:15px;border-bottom:1px solid #dbdfea}.note-modal-body{position:relative;padding:15px}.note-modal-body kbd{border-radius:2px;background-color:#000;color:#fff;padding:3px 5px;font-weight:700;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.note-modal-footer{display:flex;justify-content:flex-end;align-items:center;border-top:1px solid #dbdfea;padding:15px}@media(min-width: 576px){.note-modal-header{padding:1rem 1.5rem}.note-modal-body{padding:1.5rem 1.5rem}.note-modal-footer{padding:1rem 1.5rem}}.note-modal-footer a{color:#854fff;text-decoration:none}.note-modal-footer a:hover,.note-modal-footer a:focus{color:#3a2272;text-decoration:underline}.note-modal-title{font-size:20px;color:#1c2b46;margin:0;line-height:1.4}.note-modal-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:1040;background:#1f2b3a;-webkit-opacity:.5;-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);display:none}.note-modal-backdrop.open{display:block}@media(min-width: 768px){.note-modal-content{width:600px;margin:30px auto}}@media(min-width: 992px){.note-modal-content-large{width:900px}}.note-modal .note-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.note-modal .note-nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.note-modal .note-nav-link{display:block;padding:.5rem 1rem;color:#007bff;text-decoration:none;background-color:rgba(0,0,0,0);-webkit-text-decoration-skip:objects}.note-modal .note-nav-link:focus,.note-modal .note-nav-link:hover{color:#0056b3;text-decoration:none}.note-modal .note-nav-link.disabled{color:#868e96}.note-modal .note-nav-tabs{border-bottom:1px solid #ddd}.note-modal .note-nav-tabs .note-nav-item{margin-bottom:-1px}.note-modal .note-nav-tabs .note-nav-link{border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.note-modal .note-nav-tabs .note-nav-link:focus,.note-modal .note-nav-tabs .note-nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.note-modal .note-nav-tabs .note-nav-link.disabled{color:#868e96;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link{color:#495057;background-color:#fff;border-color:#ddd #ddd #fff}.note-modal .note-tab-content{margin:15px auto}.note-modal .note-tab-content>.note-tab-pane:target~.note-tab-pane:last-child,.note-modal .note-tab-content>.note-tab-pane{display:none}.note-modal .note-tab-content>:last-child,.note-modal .note-tab-content>.note-tab-pane:target{display:block}.note-form-group:last-child{padding-bottom:0}.note-form-label{display:block;width:100%;font-size:.785rem;color:#526484;margin-bottom:.75rem}.note-input{width:100%;display:block;outline:0;padding:.4375rem 1rem;font-size:14px;font-weight:400;line-height:1.25rem;color:#526484;background-color:#fff;background-clip:padding-box;border:1px solid #dbdfea}.note-input::-webkit-input-placeholder{color:#e5e9f2}.note-input:-moz-placeholder{color:#e5e9f2}.note-input::-moz-placeholder{color:#e5e9f2}.note-input:-ms-input-placeholder{color:#e5e9f2}.note-tooltip{position:absolute;z-index:1070;display:block;font-size:13px;transition:opacity .15s;-webkit-opacity:0;-khtml-opacity:0;-moz-opacity:0;opacity:0;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);filter:alpha(opacity=0)}.note-tooltip.in{-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);filter:alpha(opacity=90)}.note-tooltip.top{margin-top:-3px;padding:5px 0}.note-tooltip.right{margin-left:3px;padding:0 5px}.note-tooltip.bottom{margin-top:3px;padding:5px 0}.note-tooltip.left{margin-left:-3px;padding:0 5px}.note-tooltip.bottom .note-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#1f2b3a}.note-tooltip.top .note-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#1f2b3a}.note-tooltip.right .note-tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#1f2b3a}.note-tooltip.left .note-tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#1f2b3a}.note-tooltip-arrow{position:absolute;width:0;height:0;border-color:rgba(0,0,0,0);border-style:solid}.note-tooltip-content{max-width:200px;font-family:sans-serif;padding:3px 8px;color:#fff;text-align:center;background-color:#1f2b3a;border-radius:4px}.note-popover{position:absolute;z-index:1060;display:block;font-size:13px;font-family:sans-serif;display:none;background:#fff;border:1px solid #dbdfea;border:1px solid #dbdfea}.note-popover.in{display:block}.note-popover.top{margin-top:-10px;padding:5px 0}.note-popover.right{margin-left:10px;padding:0 5px}.note-popover.bottom{margin-top:10px;padding:5px 0}.note-popover.left{margin-left:-10px;padding:0 5px}.note-popover.bottom .note-popover-arrow{top:-11px;left:20px;margin-left:-10px;border-top-width:0;border-bottom-color:#9ba6c4;border-bottom-color:#dbdfea}.note-popover.bottom .note-popover-arrow::after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.note-popover.top .note-popover-arrow{bottom:-11px;left:20px;margin-left:-10px;border-bottom-width:0;border-top-color:#9ba6c4;border-top-color:#dbdfea}.note-popover.top .note-popover-arrow::after{bottom:1px;margin-left:-10px;content:" ";border-bottom-width:0;border-top-color:#fff}.note-popover.right .note-popover-arrow{top:50%;left:-11px;margin-top:-10px;border-left-width:0;border-right-color:#9ba6c4;border-right-color:#dbdfea}.note-popover.right .note-popover-arrow::after{left:1px;margin-top:-10px;content:" ";border-left-width:0;border-right-color:#fff}.note-popover.left .note-popover-arrow{top:50%;right:-11px;margin-top:-10px;border-right-width:0;border-left-color:#9ba6c4;border-left-color:#dbdfea}.note-popover.left .note-popover-arrow::after{right:1px;margin-top:-10px;content:" ";border-right-width:0;border-left-color:#fff}.note-popover-arrow{position:absolute;width:0;height:0;border:11px solid rgba(0,0,0,0)}.note-popover-arrow::after{position:absolute;display:block;width:0;height:0;border-color:rgba(0,0,0,0);border-style:solid;content:" ";border-width:10px}.note-popover-content{padding:3px 8px;color:#526484;text-align:center;background-color:#fff;min-width:100px;min-height:30px}.note-editor{position:relative;background-color:#fff}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#09c2de;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#03424b}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-frame,.note-editor.note-airframe{border:1px solid #dbdfea}.note-editor.note-frame.codeview .note-editing-area .note-editable,.note-editor.note-airframe.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable,.note-editor.note-airframe.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area,.note-editor.note-airframe .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable,.note-editor.note-airframe .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false],.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false]{background-color:#ebeef2}.note-editor.note-frame .note-editing-area .note-codable,.note-editor.note-airframe .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#1f2b3a;resize:none;outline:none;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;margin-bottom:0}.note-editor.note-frame.fullscreen,.note-editor.note-airframe.fullscreen{position:fixed;top:0;left:0;width:100% !important;z-index:1050}.note-editor.note-frame.fullscreen .note-resizebar,.note-editor.note-airframe.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-status-output,.note-editor.note-airframe .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#526484;border:0;border-top:1px solid #dbdfea}.note-editor.note-frame .note-status-output:empty,.note-editor.note-airframe .note-status-output:empty{height:0;border-top:0 solid rgba(0,0,0,0)}.note-editor.note-frame .note-status-output .pull-right,.note-editor.note-airframe .note-status-output .pull-right{float:right !important}.note-editor.note-frame .note-status-output .text-muted,.note-editor.note-airframe .note-status-output .text-muted{color:#526484}.note-editor.note-frame .note-status-output .text-primary,.note-editor.note-airframe .note-status-output .text-primary{color:#854fff}.note-editor.note-frame .note-status-output .text-success,.note-editor.note-airframe .note-status-output .text-success{color:#1ee0ac}.note-editor.note-frame .note-status-output .text-info,.note-editor.note-airframe .note-status-output .text-info{color:#09c2de}.note-editor.note-frame .note-status-output .text-warning,.note-editor.note-airframe .note-status-output .text-warning{color:#f4bd0e}.note-editor.note-frame .note-status-output .text-danger,.note-editor.note-airframe .note-status-output .text-danger{color:#e85347}.note-editor.note-frame .note-status-output .alert,.note-editor.note-airframe .note-status-output .alert{margin:-7px 0 0 0;padding:7px 10px 2px 10px;border-radius:0;color:#1c2b46;background-color:#f5f6fa}.note-editor.note-frame .note-status-output .alert .note-icon,.note-editor.note-airframe .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-frame .note-status-output .alert-success,.note-editor.note-airframe .note-status-output .alert-success{color:#1ee0ac !important;background-color:rgba(30,224,172,.2) !important}.note-editor.note-frame .note-status-output .alert-info,.note-editor.note-airframe .note-status-output .alert-info{color:#09c2de !important;background-color:rgba(9,194,222,.2) !important}.note-editor.note-frame .note-status-output .alert-warning,.note-editor.note-airframe .note-status-output .alert-warning{color:#f4bd0e !important;background-color:rgba(244,189,14,.2) !important}.note-editor.note-frame .note-status-output .alert-danger,.note-editor.note-airframe .note-status-output .alert-danger{color:#e85347 !important;background-color:rgba(232,83,71,.2) !important}.note-editor.note-frame .note-statusbar,.note-editor.note-airframe .note-statusbar{background-color:#ebeef2;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #dbdfea}.note-editor.note-frame .note-statusbar .note-resizebar,.note-editor.note-airframe .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #dbdfea}.note-editor.note-frame .note-statusbar.locked .note-resizebar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-frame .note-placeholder,.note-editor.note-airframe .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px !important}.note-toolbar{position:relative}.note-popover .popover-content,.note-editor .note-toolbar{margin:0;padding:0 0 .5rem .5rem}.note-popover .popover-content .note-btn-group,.note-editor .note-toolbar .note-btn-group{margin:0}.note-popover .popover-content>.note-btn-group,.note-editor .note-toolbar>.note-btn-group{margin:.5rem .5rem 0 0}.note-popover .popover-content .note-btn-group .note-table,.note-editor .note-toolbar .note-btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute !important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative !important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute !important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre,.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre{margin:0}.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p,.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p{margin:0;padding:0}.note-popover .popover-content .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h1{font-size:3rem}.note-popover .popover-content .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h2{font-size:2rem}.note-popover .popover-content .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h3{font-size:1.75rem}.note-popover .popover-content .note-style .dropdown-style>li,.note-editor .note-toolbar .note-style .dropdown-style>li{padding:.25rem 1rem}.note-popover .popover-content .note-style .dropdown-style>li[aria-label=pre],.note-editor .note-toolbar .note-style .dropdown-style>li[aria-label=pre]{border-bottom:1px solid #dbdfea;margin-bottom:.5rem;padding-bottom:.75rem}.note-popover .popover-content .note-color-all .note-dropdown-menu,.note-editor .note-toolbar .note-color-all .note-dropdown-menu{padding:.375rem;min-width:326px}.note-popover .popover-content .note-color .dropdown-toggle,.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:156px;padding:.375rem}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 0;font-weight:700}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:6px 0;padding:.125rem .375rem;cursor:pointer;width:100%;justify-content:center}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row{height:18px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-popover .popover-content .note-para .note-dropdown-menu,.note-editor .note-toolbar .note-para .note-dropdown-menu{min-width:245px;padding:5px}.note-popover .popover-content .note-para .note-dropdown-menu>div+div,.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-popover .popover-content .note-dropdown-menu.right,.note-editor .note-toolbar .note-dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .note-dropdown-menu.right::before,.note-editor .note-toolbar .note-dropdown-menu.right::before{right:9px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.right::after,.note-editor .note-toolbar .note-dropdown-menu.right::after{right:10px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.note-check a i,.note-editor .note-toolbar .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-popover .popover-content .note-dropdown-menu.note-check a.checked i,.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.note-editor .note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.note-editor .note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.note-editor .note-toolbar .note-color-palette div .note-color-btn{width:18px;height:18px;padding:0;margin:0;border:0;border-radius:0}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);-moz-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-sizing,.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block !important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer}html .note-fullscreen-body,body .note-fullscreen-body{overflow:hidden !important}.note-editor .note-editing-area .note-editable table{width:100%;border-collapse:collapse}.note-editor .note-editing-area .note-editable table td,.note-editor .note-editing-area .note-editable table th{border:1px solid #ececec;padding:5px 3px}.note-editor .note-editing-area .note-editable a{background-color:inherit;text-decoration:inherit;font-family:inherit;font-weight:inherit;color:#337ab7}.note-editor .note-editing-area .note-editable a:hover,.note-editor .note-editing-area .note-editable a:focus{color:#23527c;text-decoration:underline;outline:0}.note-editor .note-editing-area .note-editable figure{margin:0}.note-modal .note-modal-body label{margin-bottom:.75rem;display:inline-block}.note-modal .note-modal-body .checkbox{color:#526484}.note-modal .note-modal-body .checkbox label{display:inline-flex;align-items:center}.note-modal .note-modal-body .checkbox input[type=checkbox]{margin-right:.5rem}.note-modal .note-modal-body .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{margin-bottom:5px;display:inline-block} \ No newline at end of file diff --git a/public/dgaAdmin/assets/css/theme.css b/public/dgaAdmin/assets/css/theme.css new file mode 100644 index 0000000..8b7aa76 --- /dev/null +++ b/public/dgaAdmin/assets/css/theme.css @@ -0,0 +1,8 @@ +/*! + * Theme Name: Default + * Package : DashLite + * Author: Softnio + * Author URI: http://themeforest.net/user/softnio + * Version : 1.0.0 + * Updated : 07.08.2020 +**/ \ No newline at end of file diff --git a/public/dgaAdmin/assets/fonts/Nioicon.eot b/public/dgaAdmin/assets/fonts/Nioicon.eot new file mode 100644 index 0000000000000000000000000000000000000000..4a38c3dfe9ce145e5ddb69d083abf3b272aabe19 GIT binary patch literal 307000 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 z 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 QvbSHClOBlC+IRZ*-<<8Fng9R* literal 0 HcmV?d00001 diff --git a/public/dgaAdmin/assets/fonts/Nioicon.svg b/public/dgaAdmin/assets/fonts/Nioicon.svg new file mode 100644 index 0000000..d4b9052 --- /dev/null +++ b/public/dgaAdmin/assets/fonts/Nioicon.svg @@ -0,0 +1,1041 @@ + + + + + + +{ + "fontFamily": "Nioicon", + "majorVersion": 1, + "minorVersion": 3.1, + "fontURL": "https://softnio.com", + "copyright": "Softnio", + "designer": "Softnio", + "designerURL": "https://softnio.com", + "license": "MIT", + "description": "Handcrafted custom icon set for websites\nFont generated by IcoMoon.", + "version": "Version 1.3", + "fontId": "Nioicon", + "psName": "Nioicon", + "subFamily": "Regular", + "fullName": "Nioicon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/dgaAdmin/assets/fonts/Nioicon.ttf b/public/dgaAdmin/assets/fonts/Nioicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cf7c7310c4833275c8057bc41af71856d23fb2cf GIT binary patch literal 306836 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%0A7jucX39-+>i@$-Uka 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 z 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%0A$17`~iC^$i1GEvrHd2(5KI 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 Os+{ydjMjeGzyAgu9Gy4- literal 0 HcmV?d00001 diff --git a/public/dgaAdmin/assets/fonts/Nunito-Bold.eot b/public/dgaAdmin/assets/fonts/Nunito-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..f60ded86f611b86cd1b95353530b93ab241a3515 GIT binary patch literal 134876 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

A7#-aH7Hv+-0v%cx>dK`-G^3ORA#n14Je(4p& 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 QL6S~BVHm~Vjel_dU%biQqW}N^ literal 0 HcmV?d00001 diff --git a/public/dgaAdmin/assets/fonts/Nunito-Bold.ttf b/public/dgaAdmin/assets/fonts/Nunito-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3c7dbc4d60ffbe9e703a1d50aff282e0da8acde8 GIT binary patch literal 134708 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

H;BkF{E3zNi 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 literal 0 HcmV?d00001 diff --git a/public/dgaAdmin/assets/fonts/Nunito-Bold.woff b/public/dgaAdmin/assets/fonts/Nunito-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..27a2e58e6abf42b682d5b9a8c21190d2474471d6 GIT binary patch literal 60788 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

)~;`>8)IGRoSLWtOx1Ar0yisS__zy}!JKs@U; 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 Szsdi6GJX`_rVoU20*^YreHbnP literal 0 HcmV?d00001 diff --git a/public/dgaAdmin/assets/fonts/Nunito-Regular.eot b/public/dgaAdmin/assets/fonts/Nunito-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..7679155bfc019002c6a4dba6b829929912d9044e GIT binary patch literal 132908 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